我对双向 has_many 数据模型有疑问。我有两个模型:书籍和作者。
书可以有很多作者,作者可以有很多书
我已经在每个实体的控制器的“新”操作中创建了表单以创建实体对象,并且我想创建这样每个实体创建表单都可以获取带有复选框的其他实体对象的列表,因此用户可以轻松选择,例如,作者对于现有作者的新书,反之亦然。我该怎么做?
这是两个模型的代码:
class Book < ActiveRecord::Base
has_many :relationships
has_many :authors, through: :relationships
validates :name, presence: true, uniqueness: { case_sensitive: false }
end
class Author < ActiveRecord::Base
has_many :relationships
has_many :books, through: :relationships
validates :name, presence: true, uniqueness: { case_sensitive: false }
end
和表格的代码:
<%= form_for(@book) do |f| %>
<%= render 'shared/error_messages', object: @book %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit "Create book", class: "btn btn-large btn-primary" %>
<% end %>
<%= form_for(@author) do |f| %>
<%= render 'shared/error_messages', object: @author %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit "Create author", class: "btn btn-large btn-primary" %>
<% end %>