我有一个任务模型和用户模型。
可以为任务分配用户来处理它,同时可以为用户分配许多任务。
字段名称有点偏,所以我试图使用class_name选项等,但无论出于何种原因,我得到了一些奇怪的结果。
任务关联
belongs_to :assigned_to, :class_name => 'User', :foreign_key => 'assigned_to'
用户关联
has_many :assigned_tasks, :class_name => 'Task', :foreign_key => 'assigned_to'
然而,当我查看保存任务时正在生成的sql时,它会为assigned_to id返回nil(它是一个整数列)..然后当调用Tasks / Index操作时,我看到它正在尝试拉一个id = null的用户,因为它在字段中保存为空值。
我很可能做错了,因为我刚开始使用rails,所以非常感谢任何帮助。
由于
答案 0 :(得分:1)
我做错了两件事:
当我创建select标签时,我忘记包含:user
部分,因此当传入参数时,用户的id在用户对象之外。
belongs_to:assigned_to与数据库列同名;当选择字段被修复后参数确实正确进入时,它抱怨传递的值不是一个对象。用户期望,收到字符串等。切换关联名称修复了这个,这使得100%有意义,为什么我一定要更改数据库字段名称。
答案 1 :(得分:0)
我认为你需要_id与fk
:foreign_key => 'assigned_to_id'
我假设你的db列名是assigned_to_id
此外,这是一个非常好的资源http://guides.rubyonrails.org/association_basics.html