Ruby on rails 3 属于:类名称行为异常

Ruby on rails 3 属于:类名称行为异常,ruby-on-rails-3,activerecord,associations,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_ke

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

一个任务可以分配给一个用户来处理,而一个用户可以分配许多任务

字段名有点不正确,所以我尝试使用class_name选项等,但不管出于什么原因,我得到了一些奇怪的结果

任务关联

belongs_to :assigned_to, :class_name => 'User', :foreign_key => 'assigned_to'
has_many :assigned_tasks, :class_name => 'Task', :foreign_key => 'assigned_to'
用户协会

belongs_to :assigned_to, :class_name => 'User', :foreign_key => 'assigned_to'
has_many :assigned_tasks, :class_name => 'Task', :foreign_key => 'assigned_to'
然而,当我查看保存任务时生成的sql时,它为分配给id的_返回nil(它是一个整数列)。。然后,当调用Tasks/Index操作时,我看到它试图拉取id=null的用户,因为它在字段中保存了null值

我很可能做错了什么,因为我是rails的新手,所以非常感谢您的帮助


谢谢

我想你需要fk的身份证

:foreign_key => 'assigned_to_id'
我假设您的db列名已分配给\u id


此外,这是一个非常好的资源

我做错了两件事:

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

  • 所属对象:分配对象与数据库列同名;一旦select字段被修复,当参数确实正确输入时,它会抱怨传入的值不是对象。用户期望的、收到的字符串等。切换关联名称修复了这一点,这是100%有意义的,也是为什么我必须更改数据库字段名的原因


  • 此时该列名为“assigned_to”,这就是我将外键设置为该列的原因。。因为我的印象是rails只会采用关联的模型,并在其末尾添加一个“\u id”。。除非您手动设置外键。如果您有重命名列的选项,我会的。您能给我们显示更多代码吗?也许是控制器