【发布时间】:2011-12-28 12:32:05
【问题描述】:
您好,我想知道是否可以删除 Rails 中的关联。
嗯,我有类似的东西:
class Home < ActiveRecord::Base
include settings
end
在 settings.rb 我有类似的东西
module Settings
attr_reader :person
attr_reader :address
def self.included(base)
base.belongs_to :city
base.belongs_to :entity
[...]
end
[...]
end
在家庭课程中,我的特定案例中的城市模型协会没有意义。而且我必须找到一种方法来删除它以保持我的代码干燥。
谢谢!
注意:请在投反对票之前给我反馈。
【问题讨论】:
-
我不记得 ActiveRecord 中的任何方法,但无论如何我都会从相反的角度解决这个问题。我认为最好不要一开始就添加你不需要的关联。其中一个选项是将所有
belongs_to调用移动到一个单独的方法中,该方法将接受所需关联的列表。在这种情况下,您必须在包含模块后显式调用该方法,但它看起来仍然比添加所有并删除不必要的关联更好。 -
如果只有一个异常,把不同的代码放到 Home 类中,因为其他重用你的模块的类使用包含。很多 DRY 并不总是很方便。
-
我认为您对此有点迂腐......没有理由删除这些方法,只是让实例不会响应它们。不管这背后的原因是什么,好吧,现在还不清楚。请澄清你为什么要这样做。
-
这不是迂腐,这是我的代码逻辑问题。
标签: ruby-on-rails ruby-on-rails-3 activerecord dry