通过 :through 为 has_many 关联添加字段
Add field for an has_many association with :through
我有一个关于 has_many
协会的问题:
这是我的示例 db/models :
Table document
id : int
name : text
class Document < ActiveRecord::Base
has_many :document_pages
has_many :pages, through: :document_pages
end
Table page
id : int
content : text
class Page < ActiveRecord::Base
has_many :document_pages
has_many :documents, through: :document_pages
end
Table document_pages
document_id : int
page_id : int
page_number : int
class Page < ActiveRecord::Base
belongs_to :pages
belongs_to :documents
end
我正在创建页面和文档,我 link 这两个是这样的:
page = Page.create(:content => 'lorem')
document = Document.where(:id => id).first_or_initialize.tap do |document|
document.pages << page unless document.pages.include?(page)
end
并且在 document.pages << page
行中,我想提供 table document_pages
.
的字段 page_number
你知道怎么做吗?
做不同的事情:
page = Page.create(:content => 'lorem')
document = Document.where(:id => id).first_or_initialize. do |document|
document.document_pages.build(page: page, page_number: 1 ) unless document.pages.include?(page)
document.save!
end
我有一个关于 has_many
协会的问题:
这是我的示例 db/models :
Table document
id : int
name : text
class Document < ActiveRecord::Base
has_many :document_pages
has_many :pages, through: :document_pages
end
Table page
id : int
content : text
class Page < ActiveRecord::Base
has_many :document_pages
has_many :documents, through: :document_pages
end
Table document_pages
document_id : int
page_id : int
page_number : int
class Page < ActiveRecord::Base
belongs_to :pages
belongs_to :documents
end
我正在创建页面和文档,我 link 这两个是这样的:
page = Page.create(:content => 'lorem')
document = Document.where(:id => id).first_or_initialize.tap do |document|
document.pages << page unless document.pages.include?(page)
end
并且在 document.pages << page
行中,我想提供 table document_pages
.
page_number
你知道怎么做吗?
做不同的事情:
page = Page.create(:content => 'lorem')
document = Document.where(:id => id).first_or_initialize. do |document|
document.document_pages.build(page: page, page_number: 1 ) unless document.pages.include?(page)
document.save!
end