Ruby on rails 未知属性:用户\u id
我在执行当前的user.stories.build时得到错误未知属性:user\u idRuby on rails 未知属性:用户\u id,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我在执行当前的user.stories.build时得到错误未知属性:user\u id class User < ActiveRecord::Base has_many :stories, class_name: 'Story', foreign_key: 'user_id', dependent: :destroy ... class Story < ActiveRecord::Base belongs_to :user, class_name: 'User', f
class User < ActiveRecord::Base
has_many :stories, class_name: 'Story', foreign_key: 'user_id', dependent: :destroy
...
class Story < ActiveRecord::Base
belongs_to :user, class_name: 'User', foreign_key: 'user_id'
...
它不包含“用户id”字段。有什么想法吗?您应该在下面的
故事表中有一个用户id
字段,以定义模型中的关联
编辑
查看Emily的答案以获得详细解释。Kulbir认为您需要在故事
表中定义一个用户id
列,这是正确的,但没有解释这样做的方法
进行更改的正确方法是创建新的迁移。按照惯例,它应该被称为add\u user\u id\u to\u stories
,并按照如下方式创建(假设您使用的是Rails 3+):
如果您运行它,它实际上应该生成一个迁移,该迁移已经包含您需要进行的更改,它应该类似于:
add_column :stories, :user_id, :integer
add_column :stories, :user_id, :integer
另外,当您遵循Rails关于关联命名的约定时,实际上可以跳过很多额外的规范。在用户
模型中,您可以指定仅有多个:故事
,并在故事
模型中指定属于:用户
。Rails将采用与您指定的相同的类名和外键。您应该使用新语法并将fieldtype作为符号传递
rails generate migration add_user_id_to_stories
add_column :stories, :user_id, :integer
add_column :stories, :user_id, :integer