belongs_to with:class_name表现为奇数

时间:2011-08-07 06:22:30

标签: ruby-on-rails-3 activerecord associations

我有一个任务模型和用户模型。

可以为任务分配用户来处理它,同时可以为用户分配许多任务。

字段名称有点偏,所以我试图使用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,所以非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

我做错了两件事:

  1. 当我创建select标签时,我忘记包含:user部分,因此当传入参数时,用户的id在用户对象之外。

  2. 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