【问题标题】:Query with conditions on child model Rails 3在子模型 Rails 3 上查询条件
【发布时间】:2012-12-12 13:29:00
【问题描述】:

我有讨论、响应和用户模型。一个讨论属于一个用户,并且有很多响应。响应属于讨论和用户。用户有很多讨论并有很多响应。

我想检索 1) 属于某个用户或 2) 具有属于某个用户的响应的所有讨论。但我不确定语法。

这可以通过一个查询使用 Rails 3 语法来完成,还是我必须编写自定义 SQL?伪代码:

@discussions = current_user.discussions # and current_user.discussions where a response belongs to current_user

class Discussion < ActiveRecord::Base
  belongs_to :author, class_name: 'User', foreign_key: 'user_id'
end

class Response < ActiveRecord::Base
  belongs_to :author, class_name: 'User', foreign_key: 'user_id'
  belongs_to :discussion
end

class User < ActiveRecord::Base
  has_many :discussions
  has_many :responses
end

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:
    Discussion.includes(:responses)
         .where("discussions.user_id = :uid OR responses.user_id = :uid", uid: user_id)
    

    【讨论】:

    • 完美,谢谢!回到这里的一切都是讨论。有没有办法在记录回来时区分活动类型?例如,如果我想将结果列为 Elmer opened a discussionElmer responded to a discussion...
    • 你可以检查discussion.user_id == user_id
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多