0
审查
所以,我有三个型号:Ruby on Rails的4:顶级的饭店不@user
class Restaurant < ActiveRecord::Base
has_many :reviews
has_many :users, through: :reviews
end
class Review < ActiveRecord::Base
belongs_to :restaurant
belongs_to :user
end
class User < ActiveRecord::Base
has_many :reviews
has_many :restaurants, through: :reviews
end
现在,如果我想列出由@user审查了所有的餐馆我只需要:
Restaurant.joins(:reviews).where("reviews.user_id": @user.id)
好。但是,如果我想列出所有未通过@user审核的餐馆,该怎么办? 我尝试这样做:
Restaurant.joins(:reviews).where.not(“reviews.user_id": @user.id)
不幸的是,这并不工作,因为它也将返回@user审查了这些餐馆已被其他用户评论!
我想出了这个可怕的和昂贵的黑客:
Restaurant.joins(:reviews).reject {|x| x.users.where(id: @user.id).present? }
我敢肯定,必须有一个更好的办法。帮帮我!
它的工作原理!最令人印象深刻......并快速:)谢谢! –
欢迎您! – techdreams