Categoryminor(#75100)预期,得到“22”,它是String(#2940)的一个实例

问题描述 投票:0回答:1

运行以下命令时会调用标题中标识的错误

@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 微米)。

无法创建关系先验并在每次需要变量时运行索引搜索,但这效率不高。

否则如何解释这个模型?

ruby-on-rails
1个回答
0
投票

您的问题在这里:

belongs_to :unit_um_id, class_name: 'Categoryminor', optional: true

这个应该是

belongs_to :unit_um, class_name: 'Categoryminor', optional: true

现在因为

:unit_um_id
是一个关联,它希望您传递该关联类型的对象,例如
Categoryminor
,但是您正在通过
String

© www.soinside.com 2019 - 2024. All rights reserved.