Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未知属性:用户\u id_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 未知属性:用户\u id

Ruby 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

我在执行当前的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', 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