在on Rails的一个belongs_to的关联红宝石通过关联:设置:的has_many
-
27-09-2019 - |
题
我有三个模型,每个模型具有以下关联:
class Model1 < ActiveRecord::Base
has_many :model2s
has_many :model3s
end
class Model2 < ActiveRecord::Base
belongs_to :model1
has_many :model3s, :through => :model1 # will this work? is there any way around this?
end
class Model3 < ActiveRecord::Base
belongs_to :model1
has_many :model2s, :through => :model1 # will this work? is there any way around this?
end
你可以在注释文本看,我刚才提到我需要什么。
解决方案
您刚刚创建的方法来访问它。
class Model2 < ActiveRecord::Base
belongs_to :model1
def model3s
model1.model3s
end
end
或者,也可以委托给MODEL1的model3s方法
class Model2 < ActiveRecord::Base
belongs_to :model1
delegate :model3s, :to => :model1
end
其他提示
为什么不试试:
class Model1 < ActiveRecord::Base
has_many :model2s
has_many :model3s
end
class Model2 < ActiveRecord::Base
belongs_to :model1
has_many :model3s, :primary_key => :model1_id,
:foreign_key => :model1_id
end
class Model3 < ActiveRecord::Base
belongs_to :model1
has_many :model2s, :primary_key => :model1_id,
:foreign_key => :model1_id
end
这将有活性记录加入MODEL2和model3通过model1_id离去MODEL1完全脱离,并应该是更有效的。
不隶属于 StackOverflow