rails加入关联和id

时间:2014-02-24 11:12:08

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

我希望在SQL上实现完全花费3秒的时间,并且我正在努力工作几个小时,我想加载所有记录并保留连接(如果存在),如果不存在,那么就不要给我关联模型。

我想要创建的查询如下:

"SELECT * FROM apartments LEFT JOIN comments ON apartments.id = comments.apartment_id AND comments.user_id = ?"

当我打电话给apartment.com时,它会给我一个特定用户的记录(只能是一个),而不是每个用户的所有记录。

我试过

Apartment.joins("LEFT OUTER JOIN comments ON comments.apartment_id = apartments.id AND comments.user_id = #{user_id}") 

但它不起作用,因为当我调用apartments.com时,它会触发另一个返回所有可能注释的查询。

Apartment.includes(:comments).where("comments.user_id = ?", user_id) 

也不起作用,因为它只返回具有特定用户评论的公寓。

需要帮助!

1 个答案:

答案 0 :(得分:0)

也许你可以试试这个:

#app/models/apartment.rb
Class Apartment < ActiveRecord::Base
   has_many :comments
   scope :user, ->(id) { where("comments.user_id = ?", id }
end 

@apartment = Apartment.find(params[:id])
@comments = @apartment.comments.user(user_id)