有许多belongs_to不工作Rails

时间:2016-05-08 17:31:45

标签: ruby-on-rails ruby postgresql

这是一个非常noob的问题,我从Rails开始。我有一个类用户,有很多费率,每个费率属于一个用户。

评级等级

class Rate < ActiveRecord::Base
    belongs_to :user
end

用户类

class User < ActiveRecord::Base
  include Authenticable

  has_many :rates

  validates :username, uniqueness: true, allow_blank: true, allow_nil: true

差饷迁移

class CreateRates < ActiveRecord::Migration
  def change
    create_table :rates do |t|
      t.string :points

      t.timestamps null: false
    end
  end
end

用户迁移

class DeviseCreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :email,              null: true,  default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.inet     :current_sign_in_ip
      t.inet     :last_sign_in_ip

      t.string   :authentication_token,   default: ""

      ## User attributes
      t.string   :username,               default: ""

      t.timestamps
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    add_index :users, :authentication_token, unique: true
  end
end

当我创建数据库并运行rake db:migrate时,所有实体都已迁移,但表速率没有user_id

2 个答案:

答案 0 :(得分:1)

您需要将user_id列添加到费率表

答案 1 :(得分:0)

很难说没有看到迁移文件本身,但您可以使用迁移中的add_reference函数添加对表的引用:

class AddUserIdToRate < ActiveRecord::Migration
  def change
    unless column_exists? :rates, :user_id
      add_reference :rates, :user, index: true
    end
  end
end

如果您收到错误,请在此处发布,我们希望能够提供更多信息。

修改

您的迁移中没有任何内容涉及在user_id表格中创建rates列。使用上述代码添加迁移应添加user_id外键。