ruby-on-rails - 未知属性 : user_id

标签 ruby-on-rails ruby activerecord

我在执行 current_user.stories.build 时遇到错误 unknown attribute: 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 是正确的,您需要在 stories 表中定义一个 user_id 列,但没有解释这样做的方法。

进行该更改的正确方法是创建一个新的迁移。按照惯例,它应该被称为 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 将采用您指定的相同类名和外键。

关于ruby-on-rails - 未知属性 : user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529405/

相关文章:

ruby-on-rails - heroku rails 应用程序域仅在没有 www 的情况下工作

mysql - rails 4 : Combining two DB variables into a conditional statement for display

ruby-on-rails - rails gem 'countries' - LoadError : cannot load such file -- iso3166

ruby-on-rails - 如何按 Activerecord 中的计算值排序?

ruby-on-rails - 用户 has_many 关联不起作用(错误 :Could not find the association :user_categories in model Category)

ruby-on-rails - Spring : does "rails server" not start spring?

ruby-on-rails - Rails : scaffold. 为模型创建管理 Controller

ruby-on-rails - Redcarpet 语法高亮

ruby-on-rails - 基于小时的 ActiveRecord 范围

ruby-on-rails-3 - ActiveRecord:如果存在则更新记录,否则创建?