2016-04-14 144 views
2

我找找到不被用戶所擁有的書籍以正確的方式......這裏有關聯:Rails的記錄不關聯

書 -

has_many :owns, :dependent => :destroy 

用戶 -

has_many :owns, :dependent => :destroy 
has_many :owned_books, :through => :owns, source: :book, :dependent => :destroy 

自己 -

belongs_to :user 
belongs_to :book 

我有(例如,Book.where(title => "Foo")Book.where(title => "Bar")),並希望添加一個篩選器,用戶只能看到那些不具有該標題的圖書。這對我來說很明顯,這應該是書模型中的一種新關聯,但我有點迷失。

回答

6

如果你談論的是剔除那些用戶所擁有的:

Book.where.not(id: user.owned_book_ids) 

你可以在那裏鏈的附加條件通過只是追加他們。

+0

這比我預期的更簡單,謝謝。 – user3141095

+1

這就是擁有正確數據結構的好處。像這樣的查詢有時非常簡單。 – tadman

+0

這是什麼魔術!!!!!非常感謝,先生:D 'owned_book_ids' @@我沒有在任何其他Rails教程的任何地方看到這個幫助器? – user3448806

相關問題