我的Rails 4.2应用程序中有3个模型:
class Vintage < ActiveRecord::Base
has_many :grapers, dependent: :destroy
has_many :grapes, through: :grapers
attr_accessible :grapers_attributes
accepts_nested_attributes_for :grapers, reject_if: :all_blank, allow_destroy: true
accepts_nested_attributes_for :grapes
end
class Grape < ActiveRecord::Base
has_many :grapers
has_many :vintages, through: :grapers
end
class Graper < ActiveRecord::Base
belongs_to :vintage
belongs_to :grape
attr_accessible :grape_attributes
accepts_nested_attributes_for :grape, reject_if: :all_blank
attr_accessor :name
end
我的带有嵌套属性的cocoon表单效果很好。 我的uniq问题是我不想允许通过嵌套表单创建/更新葡萄。
我的年份拥有许多与 grape 相关联的 grapers 。我不希望应用程序可以通过此表单创建/更新葡萄。我有另一种形式添加葡萄。 我只是想用嵌套的形式通过grapers将葡萄贴在葡萄酒上。
我错过了什么?如何禁止应用程序通过嵌套表单编辑葡萄?
实际上,例如,如果我输入“Merlo”并且没有点击“Merlot”行,该应用程序会在我的数据库中将“Merlot”更改为“Merlo”!
编辑:我认为的代码:
<%= link_to_add_association 'Add grape', f, :grapers, 'data-association-insertion-node' => "#vintage-grapes ol", 'data-association-insertion-method' => "append", :wrap_object => Proc.new {|graper| graper.build_grape; graper }, :partial => '/admin/vintages/graper_field' %>
答案 0 :(得分:1)
如果您不想创建grapes
,则应删除。
accepts_nested_attributes_for :grapes
您的cocoon表单应生成graper
表单,您可以从中选择但不能编辑grapes
。
您的洗手液中也不允许grapes_parameters
。