0

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

我想检索 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
4

1 回答 1

2
Discussion.includes(:responses)
     .where("discussions.user_id = :uid OR responses.user_id = :uid", uid: user_id)
于 2012-12-12T14:00:40.363 回答