很多belongs_to和has_many在一行

时间:2014-11-18 11:08:22

标签: ruby-on-rails ruby-on-rails-4.1

您好我正在开发一个在模型上有很多关系的应用程序。 现在我正在考虑减少代码行,我找到了很多关系,比如has_manybelongs_to

我们可以在哪里写下像

这样的东西

belongs_to [:comment, :rating, :indication], dependent: :destroy

belongs_to :travels, foreign_key: travel_item_id

1 个答案:

答案 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