您好我正在开发一个在模型上有很多关系的应用程序。
现在我正在考虑减少代码行,我找到了很多关系,比如has_many
和belongs_to
。
我们可以在哪里写下像
这样的东西 belongs_to [:comment, :rating, :indication], dependent: :destroy
belongs_to :travels, foreign_key: travel_item_id
答案 0 :(得分:4)
不幸的是,不是。 AFAIK这是不可能的,甚至文档似乎也不允许这样做。 你可以做的是定义一个迭代数组并创建这种关联的元编程方法。但不确定是否值得。
修改强>
我的意思是metaprogramming method
的一个例子
创建文件app/models/concerns/associate.rb
module Associate
extend ActiveSupport::Concern
module ClassMethods
def associate(ass_type, names = [], params = {})
names.each do |n|
send ass_type, n, params
end
end
end
end
然后,在您的模型中,要执行多个belongs_to
,只需执行
include Associate
associate :belongs_to, [:comment, :rating, :indication], dependent: :destroy