2011-12-11 41 views
0

所以我有書籍和作者模型。引用多對多關聯和連接表中的父模型 - Rails 3

Books has_many authorsAuthors has_many books

在我的路線,書嵌套在作者和我有一個連接表連接兩個(authors_books)。

所以一本本路徑將住在這裏:authors/1/books

我的問題是,在我的模型,如果我有這是做XYZ找到一個函數/創建新的書本,find_or_create_by method - 我該如何確保它鏈接在authors_books連接表的新記錄中將新/找到的書籍ID與父作者ID相提並論?

回答

1

您可以通過在此關聯中創建模型來完成此操作,而不是使用has_and_belongs_to_many。由於缺乏一個更好的名字,我會叫這個模型Authorship,它應該是這樣的:

class Authorship < ActiveRecord::Base 
    belongs_to :author 
    belongs_to :book 
end 

那麼就需要定義你的Author模型協會,以書籍是這樣的:

class Author < ActiveRecord::Base 
    has_many :authorships 
    has_many :books, :through => :authorships 
end 

而扭轉,在您的Book型號:

class Book < ActiveRecord::Base 
    has_many :authorships 
    has_many :authors, :through => :authorships 
end 

這樣,你還是會抱着「有屬於許多」您要的功能,除了你W¯¯現在可以通過新創建的模型訪問連接表中的記錄。