我在执行 current_user.stories.build 期间收到错误未知属性:user_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'
...
模式.rb
create_table "stories", :force => true do |t|
t.string "responsible"
t.string "descr"
t.string "state"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "users", :force => true do |t|
t.string "email"
t.string "password_digest"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "name"
end
它不包含“user_id”字段。有任何想法吗?
Kulbir 是正确的,你需要定义一个user_id
列在你的stories
表,但没有解释这样做的方法。
进行更改的正确方法是创建新的迁移。按照惯例,它应该被称为add_user_id_to_stories
并将按如下方式创建(假设您使用的是 Rails 3+):
rails generate migration add_user_id_to_stories
如果运行它,它实际上应该生成一个迁移,其中已经包含您需要进行的更改,应该类似于:
add_column :stories, :user_id, :integer
顺便说一句,当您遵循有关关联命名的 Rails 约定时(您确实如此),您实际上可以跳过许多额外的规范。在里面User
型号,您可以指定has_many :stories
并在Story
型号指定belongs_to :user
。 Rails 将采用与您指定的相同的类名和外键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)