运行以下命令时会调用标题中标识的错误
@component = Ccomponent.new(ccomponent_params)
获得的响应“22”与两个不同的提交隔离:
Parameters: {"authenticity_token"=>"[FILTERED]", "ccomponent"=>{"shop_id"=>"1", "unit_um_id"=>"22", "shelf_life_target"=>"2"}, "commit"=>"submit"}
Parameters: {"authenticity_token"=>"[FILTERED]", "ccomponent"=>{"shop_id"=>"1", "unit_um_id"=>"", "shelf_life_target"=>"2"}, "commit"=>"submit"}
第二种情况在错误消息中返回
got ""
。
所以问题在于
unit_um_id
变量的关系。
该类由来自同一类的两个变量定义。
belongs_to :um, class_name: 'Categoryminor'
belongs_to :unit_um_id, class_name: 'Categoryminor', optional: true
当
unit_um_id
变量不存在时,之前不会出现该错误。
因此,rails 似乎不允许两个变量属于同一类(我可以明白为什么:参数始终是字符串,并且模型逻辑将转换为整数:所以这里该逻辑只处理一种关系)
um
代替计量单位,并且两者在课程中都需要(考虑容量为 75 cl(第 1 微米)的瓶子,但是以瓶子购买的(单位 - 第 2 微米)。
无法创建关系先验并在每次需要变量时运行索引搜索,但这效率不高。
否则如何解释这个模型?
您的问题在这里:
belongs_to :unit_um_id, class_name: 'Categoryminor', optional: true
这个应该是
belongs_to :unit_um, class_name: 'Categoryminor', optional: true
现在因为
:unit_um_id
是一个关联,它希望您传递该关联类型的对象,例如Categoryminor
,但是您正在通过 String
。