Cocoon gem: 保护嵌套关联模型
Cocoon gem: protect nested associated model
我的 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
我的带有嵌套属性的茧形表单运行良好。
我的 uniq 问题是我不想让 create/update 葡萄通过嵌套形式。
我的 vintage 拥有许多与 grapes 相关的 grapers。我不希望应用程序可以通过此表单 create/update 葡萄。我有另一种形式来添加葡萄。
我只想使用嵌套形式通过葡萄种植者将葡萄附加到年份。
我错过了什么?如何禁止应用通过嵌套形式编辑葡萄?
实际上,例如,如果我输入 "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' %>
如果您不想创建 grapes
,那么您应该删除。
accepts_nested_attributes_for :grapes
您的茧形表格应该生成 graper
表格,您可以从中选择但不能编辑 grapes
。
此外,在您的消毒剂中不允许 grapes_parameters
。
我的 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
我的带有嵌套属性的茧形表单运行良好。 我的 uniq 问题是我不想让 create/update 葡萄通过嵌套形式。
我的 vintage 拥有许多与 grapes 相关的 grapers。我不希望应用程序可以通过此表单 create/update 葡萄。我有另一种形式来添加葡萄。 我只想使用嵌套形式通过葡萄种植者将葡萄附加到年份。
我错过了什么?如何禁止应用通过嵌套形式编辑葡萄?
实际上,例如,如果我输入 "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' %>
如果您不想创建 grapes
,那么您应该删除。
accepts_nested_attributes_for :grapes
您的茧形表格应该生成 graper
表格,您可以从中选择但不能编辑 grapes
。
此外,在您的消毒剂中不允许 grapes_parameters
。