在我的应用程序中,我决定将部分逻辑移动到名为 CategoryForm 的额外类中,该类专用于 ActiveRecordCategory
类。不幸的是,当我将参数传递给Category
, 时ActiveModel::ForbiddenAttributesError
被提出。这是类别类:
class Category < ActiveRecord::Base
has_many :subcategories
accepts_nested_attributes_for :subcategories
end
CategoryForm 类:
class CategoryForm
attr_accessor :model
def initialize(model, params = {})
@model = model
@model.assign_attributes(params)
build_subcategories
end
def save
delete_empty_subcategories
@model.save
end
private
def build_subcategories
8.times { @model.subcategories.build}
end
def delete_empty_subcategories
@model.subcategories.each { |subcategory| subcategory.delete if subacategory.empty?}
end
end
和 CategoryController 片段:
def create
@category = Category.new
@category_form = CategoryForm.new(@category, params[:category])
错误指向@model.assign_attributes(params)
一致,据我了解,我Category
无法使用子类别的参数。但另一方面,这就是nested_attributes
为了......知道如何正确启用它或还有什么问题?