我有一个产品类,产品对零或多个角色可见。所以我创建了一个名为content_roles的多态模型,它存储了角色的id和content_id(将是product_id或event_id),以及content_type(产品,事件等)。
我使用nested_form gem接受角色id(使用check_box)在product_role中存储产品和角色关系
我面临的问题是我无法创建content_role记录。在我的日志中,我获得了未经许可的参数:role_id
参数:{“utf8”=>“✓”,“authenticity_token”=>“xxxxxxxxxxxxxxxxxxxxdLH99ZWLrf8dgT3gcBops =”,“product”=> {“product_name”=>“some product”,“product_description”=> ;“某些产品说明”,“content_roles_attributes”=> {“role_id”=> [“1”,“2”,“”]}},“提交”=>“创建产品”}
在我看来我写过
= f.simple_fields_for :content_roles_attributes do |role|
= role.input :role_id,label: "visible to", as: :check_boxes,label: "Role",collection: Role.all,:required=>true
控制器允许params看起来像
def product_params
params.require(:product).permit(:product_description,:product_name,
content_roles_attributes: [:role_id,:id],
multimedia_attributes:[:asset,:_destroy,:id])
end
产品型号看起来像
class Product
has_many :content_roles, as: :content
has_many :multimedia ,as: :storable
# Nested attributes
accepts_nested_attributes_for :multimedia
accepts_nested_attributes_for :content_roles
end
这是content_role模型
class ContentRole < ActiveRecord::Base
belongs_to :content, polymorphic: true
belongs_to :role
belongs_to :news
belongs_to :product
end
答案 0 :(得分:0)
尝试将product_params
更改为:
def product_params
params.require(:product).permit(
:product_description,
:product_name,
content_roles_attributes: [:id, role_id: []],
multimedia_attributes: [:asset, :_destroy,:id]
)
end