如果要訪問連接表記錄,則必須使用has-many-through
關係重新創建連接表。這裏有一個很好的指導,以及has-many-through
和has-and-belongs-to-many
之間的區別,在這裏:http://railscasts.com/episodes/47-two-many-to-many。
你需要創建一個類似以下內容來創建連接表一個新的遷移:
class Authorships < ActiveRecord::Migration
def change
create_table :authorships do |t|
t.belongs_to :book, index: true
t.belongs_to :author, index: true
t.timestamps null: false
end
add_foreign_key :authorships, :books
add_foreign_key :authorships, :authors
end
end
其中「的著者」可以是任何名稱您認爲適合的連接表(或「BookAuthors」如果你會想堅持)。
作爲一個簡單的例子,你的模型可能看起來像以下:
class Book < ActiveRecord::Base
has_many :authorships
has_many :authors, through: :authorships
end
class Author < ActiveRecord::Base
has_many :authorships
has_many :books, through: :authorships
end
class Authorship < ActiveRecord::Base
belongs_to :book
belongs_to :author
end
您可以添加額外的列到連接表並訪問他們根據需要,與authorship_ids
一起,和Author.first.books
/Book.first.authors
一旦他們」重新添加。
希望有用!
你不能。 'has_and_belongs_to_many'使用join _table_,而不是join _model_。你想在連接模型中使用'has_many:through'。 – Substantial 2015-02-23 18:46:23