假设我有一个用户可以评价书籍的应用程序。表是用户(id),书籍(id)和评级(user_id,book_id,value)。我已经制作了这些模型
class Rating < ActiveRecord::Base
belongs_to :user
belongs_to :book
end
class User < ActiveRecord::Base
has_many :ratings
end
class Book < ActiveRecord::Base
has_many :ratings
end
我想获得所有(评级和未评级)图书的列表,其中包含当前用户的评分。在SQL中使用外连接很容易,但我无法找到在Rails 3中实现它的方法。
答案 0 :(得分:1)
根据LEFT OUTER joins in Rails 3,您必须在SQL中指定外连接...
答案 1 :(得分:0)
它在rails中也很简单。您可能应该在用户中添加书籍关系。
class User < ActiveRecord::Base
has_many :ratings
has_many :users, :through => :ratings
end
current_user.books.includes(:ratings).all
应该有用。