gpt4 book ai didi

ruby-on-rails - Rails 3.1 -- 不能批量分配 protected 属性(即使添加到 attr_accessible)

转载 作者:行者123 更新时间:2023-12-04 20:19:36 27 4
gpt4 key购买 nike

我有一个嵌套表单 categoriesstores并在商店模型中将其列为 attr_accessible。但仍然不断收到以下错误:

WARNING: Can't mass-assign protected attributes: category_ids

我已经在商店模型中尝试了 attr_accessible 的所有变体:
attr_accessible :categories
attr_accessible :category
attr_accessible :category_id
attr_accessible :category_ids

他们都没有工作!这两个模型都是has_and_belongs_to_many(并且有一个名为categories_stores 的连接表)。

任何建议将不胜感激(为此我已经把头撞在墙上两天了)。

更新

我已经实现了 临时修复 (这是非常多余的,如果 rails 只是坚持上述问题,则不需要)。我通过覆盖 create 来修复它ActiveAdmin 和循环插入关联数据的方法:
  controller do
def update
@store = store.find(params[:id])
if @store.update_attributes(params[:store])
@store.categories.delete_all
params[:store][:category_ids].each do |category_id|
@store.categories << Category.find(category_id) unless category_id.blank?
end
redirect_to :action => :index
else
redirect_to :action => :edit, :notice => "Something f'ed up"
end
end

end

最佳答案

我相信如果您有一个名为 category_stores 的连接表,那么您的分配将更多地遵循以下原则:

class Store

has_many :categories, :through => :categories_stores

在类别模型中具有类似的设置。

在您的表单中,如果您正在创建一个商店,并且您想为该商店创建/添加类别,那么您可能还需要添加:
    accepts_nested_attributes_for :categories_stores

能够添加到该表。

您可以在此处阅读有关嵌套属性的更多信息: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

关于ruby-on-rails - Rails 3.1 -- 不能批量分配 protected 属性(即使添加到 attr_accessible),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com