.joins有三个模型

时间:2014-02-19 07:39:47

标签: ruby-on-rails activerecord join associations

我有三个模型需要连接在一起(有4个模型在玩,但我只需加入其中的三个)。 4个模型是用户,关键字,问题,关联。

这些是模型中的关系

  1. 用户通过关联有很多关键字
  2. 关键字通过关联包含许多用户
  3. 关键字有很多问题
  4. 问题属于关键字
  5. 模型是 -

    class User < ActiveRecord::Base
      has_many :associations, dependent: :destroy
      has_many :keywords, :through => :associations 
    
    class Keyword < ActiveRecord::Base      
      has_many :associations, dependent: :destroy
      has_many :users, :through => :associations
    
      has_many :questions, dependent: :destroy
    
    class Association < ActiveRecord::Base
      belongs_to :keyword
      belongs_to :user
    
    class Question < ActiveRecord::Base
      belongs_to :keyword
    

    现在我需要使用.joins检索特定用户的关键字的所有问题(例如user_id = 2)。

    任何想法我怎样才能做到这一点。

2 个答案:

答案 0 :(得分:1)

你应该使用

Keyword.joins(:questions, :users).includes(:questions).where(users: {id: 2})

答案 1 :(得分:1)

请试试这个:

Question.joins(keyword: [:user]).where(users: {id: 2})