Rails ActiveRecord通过两个has_many关联检索关联的数据

时间:2019-01-10 08:29:43

标签: ruby-on-rails ruby rails-activerecord

假设您有一个Licence模型和has_many: :seats模型Seat

我想找回的是has_many: :customers上所有客户的ActiveRecord对象。有办法吗?

我有一个解决方案Licence,但这将返回不是我要找的Array对象。

感谢您的帮助!

3 个答案:

答案 0 :(得分:6)

通过选项使用has_many:

class Licence
    has_many :seats
    has_many :customers, through: :seats
end

现在您可以吸引客户

licence.customers

答案 1 :(得分:1)

joins完成了工作:

Customer.joins(:seat).where(seats: { licence_id: licence.id })

它根据需要返回Relation

答案 2 :(得分:0)

对于大型记录,这不是有效的联接/包含方法。

-| SwitchNavigator 
   -> Login
   -> Main
      -> BottomTabNavigator
         -> Home
            -> StackNavigator
               -> DetailMerchant
               -> DetailMenu 
         -> Order
         -> Account

查询-

class Licence
    has_many :seats

    def customers
      #customer belongs_to seat
      Customer.where(seat_id: seats.pluck(:id))
    end
end