Mar*_*jan 9 ruby-on-rails ruby-on-rails-3
假设我有两个模型,Book和Author,它们之间有has_and_belongs_to_many关系.
我想要做的是能够在书籍表格中添加作者姓名,并在提交时将作者与书籍链接(如果已经存在),或者如果他们不存在则创建它们.
我还想对作者表单做同样的事情:添加书名和提交,如果它们存在则链接它们,或者如果它们不存在则创建它们.
但是,在编辑时,我希望既不能编辑也不能删除嵌套对象,只能删除关联.
accepted_nested_attributes_for适合这个,还是有另一种方式?
我设法通过遵循Rails 2上的Complex Forms railscast 来实现这一目标,但我正在为Rails 3寻找更优雅的解决方案.
tad*_*man 12
我不确定为什么这么多人使用has_and_belongs_to_many,这是Rails 1的遗物,而不是使用,has_many ..., :through除了它可能在许多旧的参考书和教程.两种方法之间的最大区别是第一种使用复合键来识别它们,第二种是一流模型.
如果重新定义关系,则可以在中间模型级别进行管理.例如,您可以添加和删除BookAuthor记录而不是has_and_belongs_to_many众所周知难以单独调整的链接.
您可以创建一个简单的模型:
class BookAuthor < ActiveRecord::Base
belongs_to :book
belongs_to :author
end
Run Code Online (Sandbox Code Playgroud)
您现在可以更轻松地链接每个其他模型:
class Book < ActiveRecord::Base
has_many :book_authors
has_many :authors, :through => :book_authors
end
class Author < ActiveRecord::Base
has_many :book_authors
has_many :books, :through => :book_authors
end
Run Code Online (Sandbox Code Playgroud)
在嵌套表单上,book_authors直接管理关系,根据需要添加和删除关系.
| 归档时间: |
|
| 查看次数: |
5507 次 |
| 最近记录: |