【问题标题】:Rails active record query through multiple tablesRails 通过多个表查询活动记录
【发布时间】:2014-03-27 02:26:02
【问题描述】:

我正在尝试根据主题或类别查询问题。我有一个包含许多主题的类别模型和一个包含许多问题的主题模型。如何选择 subject_id = x 或 category_id = y 的 50 个问题?我不确定是否需要更改模型关联然后查询或使用具有当前关联的查询。以下是模型(去掉了一些多余的代码):

category.rb

class Category < ActiveRecord::Base
  has_many :subjects, class_name: "Subject",
                      foreign_key: "category_id"
  has_many :questions, through: :subjects
end

主题.rb

class Subject < ActiveRecord::Base
  belongs_to :category  
  has_many :questions, class_name: "Question",
                       foreign_key: "subject_id"
end

问题.rb

class Question < ActiveRecord::Base
  belongs_to :subject
end

我取得的最大成功是使用“Question.joins(:subject).group(category_id:1)”,它只返回具有关联类别的最后一个问题。有什么建议么?谢谢!

【问题讨论】:

  • 我想我在这里对给定类别有正确的查询:Question.joins(:subject).merge(Subject.where(:category_id =>1)),现在选择 50 个随机问题。 . .

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


【解决方案1】:

所以你可以做一个范围

class Question < ActiveRecord::Base

  scope :q_or_c ->(q, c){ where('category_id = ? OR question_id = ?', q, c) }

  ...

end

然后调用它

Question.q_or_c(question_id, category_id)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多