如何正确使用collection_select以及自定义关联
我有一个像这样的患者档案模式: –
class Profile < ActiveRecord::Base belongs_to :eyes, class_name: "EyeColor", foreign_key: "eyes" end
数据库表有一个名为eyes的整数
我有一个EyeColor模型,它只有一个ID和描述(颜色的文字)
我已经制作了一个表格,上面有一个collection_select: –
现在,当我尝试通过表单更新记录时,我得到以下内容: –
ActiveRecord::AssociationTypeMismatch (EyeColor(#45428760) expected, got String(#19387428))
我确信这很简单,但任何想法我做错了什么?
这里的问题是表单结构将查找:eyes
属性并为其分配select将为其发送的字符串值。 但是Rails引擎期望这个属性的EyeColor
对象,而不是String
。 您应该更改外键的名称:
belongs_to :eye, class_name: "EyeColor", :foreign_key: "eye_id"
或更好:
belongs_to :eyecolor
有了这个,你需要一个名为eye_colors的表,一个名为EyeColor
的类和一个外键eye_color_id
。
顺便提问的问题:
https://stackoverflow.com/a/13356481/2943357
希望这可以帮助。