Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用gem修复重复的模型名_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何使用gem修复重复的模型名

Ruby on rails 如何使用gem修复重复的模型名,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我尝试使用rails应用程序中的gem。 在gem中,模型中使用了“Receipt”类。 但是我已经在我的应用程序中使用了“Receipt”类 在本例中,模型和表名是重复的。 那么,修复重复模型名称的最佳方法是什么 我认为: 方法1:在gem中重命名模型/表名称 方法2:在我的应用程序中重命名模型/表名称 我没有找到采取这种方式的任何线索 如果我采用Way2,我将重命名表名,然后在整个应用程序中重命名模型名。如果可能的话,我想避免这种方式,因为我已经在很多地方使用了“收据” 我是否必须采用W

我尝试使用rails应用程序中的gem。 在gem中,模型中使用了“Receipt”类。 但是我已经在我的应用程序中使用了“Receipt”类

在本例中,模型和表名是重复的。 那么,修复重复模型名称的最佳方法是什么

我认为:

  • 方法1:在gem中重命名模型/表名称
  • 方法2:在我的应用程序中重命名模型/表名称
我没有找到采取这种方式的任何线索

如果我采用Way2,我将重命名表名,然后在整个应用程序中重命名模型名。如果可能的话,我想避免这种方式,因为我已经在很多地方使用了“收据”


我是否必须采用Way2,或者是否有其他好的方法来修复重复的模型名称?

正如您所说,由于它们是ActiveRecord类,因此它们具有相同的表,并且它们将在应用程序的命名空间中发生冲突

您可以使用模块来避免名称类冲突,也可以更新gem或您的代码来为类使用不同的名称


如果您选择将类放在模块中,对于数据库中的表,您可以使用该类使用不同的名称,而不是ActiveRecord所期望的默认名称。

谢谢,正如您所提到的,我想我将类放在模块中,并使用set\u table\u name。但我必须在整个应用程序中将我的类从Receipt更改为MyApp::Receipt。我别无选择,只能这么做吗?据我所知,没有。在一个gem中,有一个库一直调用Foo类,还有你自己的代码也调用这个类。没有一种神奇的方法可以避免类名冲突,但是,您可以做的是将所有代码(或gem代码)封装在一个模块中,以避免类名冲突。但还是有很多工作要做。非常感谢。我将尝试在我的应用程序中重命名它。