簡體   English   中英

Rails 3從has_many中查找所有記錄:直通之前的has_many

[英]Rails 3 Find all records from has_many :through without collision from previous has_many

我有以下型號:

class User < ActiveRecord::Base
  has_many :books, :dependent => :destroy
  has_many :favorites
  has_many :books, :through => :favorites
end

class Favorite < ActiveRecord::Base
  belongs_to :book
  belongs_to :user

  validates :user_id, :book_id, :presence => true
end

class Book < ActiveRecord::Base
  belongs_to :user
  belongs_to :favorite
end

這個想法是,用戶可以擁有一本書,並可以將其他用戶的書添加為收藏。 rails console ,我嘗試了User.find(1).favorites.books但遇到了NoMethodError:未定義的方法books'. And books'. And user.books`只返回該用戶擁有的書

在這種情況下,有什么方法可以檢索屬於用戶收藏夾的所有書籍?

您非常接近,但是您不應該擁有兩個關聯名稱books 嘗試這樣的事情:

class User < ActiveRecord::Base
  has_many :books, :dependent => :destroy
  has_many :favorites
  has_many :favorite_books, :through => :favorites, :source => :book
end

那么您的查詢將只是User.find(1).favorites_books

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM