我有模特:
class Model < ActiveRecord::Base
has_many :model2
end
class Model2 < ActiveRecord::Base
belongs_to :model
belongs_to :model3
end
class Model3 < ActiveRecord::Base
has_many :model2
end
Model3在db label
中有字段。我如何通过Model3
label
找到模型?
答案 0 :(得分:4)
首先:你遗失了协会:
class Model < ActiveRecord::Base
has_many :model2
end
class Model2 < ActiveRecord::Base
belongs_to :model
belongs_to :model3
end
class Model3 < ActiveRecord::Base
has_many (or has_one?) :model2
end
然后Model3.where(:label => 'label').map(&:model2).map(&:model)
答案 1 :(得分:1)
使用“联接”,您可以根据链接的模型过滤结果
Model.joins(:model2s => :model3).where('model3.label' => 'label')
这将仅在db调用时创建,因此它非常有效。但是,当从模型到模型3有多种方式时,连接可以创建重复项。如果可以,那么您需要添加
Model.select("DISTINCT model.*").joins(:model2s => :model3).where('model3.label' => 'label')