我有三個型號:Rails ActiveRecord - 執行包含的最佳方式?
class Book < ActiveRecord::Base
has_many :collections
has_many :users, :through => :collections
end
class User < ActiveRecord::Base
has_many :collections
has_many :books, :through => :collections
end
class Collection < ActiveRecord::Base
belongs_to :book
belongs_to :user
end
我想要顯示的書籍列表,並有一個鏈接添加或從用戶的集合中刪除。我無法弄清楚這樣做的最佳語法。
例如,如果我做到以下幾點:
控制器
class BooksController < ApplicationController
def index
@books = Book.all
end
end
查看
...
<% if book.users.include?(current_user) %>
...
或明顯的逆...
...
<% if current_user.books.include?(book) %>
...
然後查詢是爲每個發送書檢查包括?這是浪費。我正在考慮將用戶或集合添加到Book.all上的include,但我不確定這是否是最好的方法。實際上,我需要的僅僅是書籍對象,而不管當前用戶是否在其集合中擁有該書籍,但我不確定如何爲查詢進行論壇化。
在此先感謝您的幫助。
-Damien
這似乎是最好的方式,但我遇到了混合問題:連接和:包含在同一個查找中。我的@books = Book.all真的是@books = Book.all(:include => [:authors,...]) – dwhite 2010-03-09 03:26:59
您可以使用'include'而不是'joins'。不必同時使用它們。 – 2010-03-12 08:26:01