我有一个像这样的患者档案模式: -
class Profile < ActiveRecord::Base
belongs_to :eyes, class_name: "EyeColor", foreign_key: "eyes"
end
数据库表有一个名为eyes
的整数我有一个EyeColor模型,它只有一个ID和描述(颜色的文本)
我已经制作了一个表格,其上有一个collection_select: -
<div class="field">
<%= f.label :eyes %><br>
<%= f.collection_select :eyes, EyeColor.all, :id, :description %>
</div>
现在,当我尝试通过表单更新记录时,我得到以下内容: -
ActiveRecord::AssociationTypeMismatch (EyeColor(#45428760) expected, got String(#19387428))
我确信这很简单,但任何想法我做错了什么?
答案 0 :(得分:0)
这里的问题是表单结构将查找: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
希望这有帮助。