Rails,使用has_and_belongs_to_many获取多个值的记录

时间:2016-08-23 22:24:04

标签: ruby-on-rails activerecord

给出这些模型

modelOne
    has_and_belongs_to_many :model_twos

modelTwo
    has_and_belongs_to_many :model_ones

    field_one: string

我如何使用有效记录来获取所有与field_one等于"value_1""value_2"

相关联的modelTwos的modelOnes

类似于ModelOne.joins(:model_twos).where(model_twos:{field_one: "value_1" AND "value_2"})

1 个答案:

答案 0 :(得分:0)

如果您只想使用ActiveRecord(即不会回到Arel),这确实有点棘手。

我不是100%肯定它会起作用甚至产生令人满意的SQL,但我会尝试这样的事情:

class ModelOne < ActiveRecord::Base
  scope :with_model_two_value, -> (val) { joins(:model_twos).where(model_twos: { field_one: val }) }
end

ModelOne.with_model_two_value('value_1').merge(ModelOne.with_model_two_value('value_2'))