rails将属性保存到对象时出错

时间:2014-07-08 12:20:04

标签: ruby-on-rails ruby

我有2个模型:User和UserLvl。

class User < ActiveRecord::Base
 has_one :user_lvl, primary_key: 'user_lvl_id', foreign_key: 'id'
end

class UserLvl < ActiveRecord::Base
 belongs_to :user
end

控制器操作

 def change_lvl
  @user.user_lvl = UserLvl.first
  @user.save
 end

UserLvl.first返回正常,id除了它之外的所有内容都在"Column 'id' cannot be null"

的第一行失败

为什么会这样?

编辑:

schema.rb

create_table "users", force: true do |t|
 t.string   "email",                  default: "",    null: false
 t.string   "encrypted_password",     default: "",    null: false
 t.integer  "user_lvl_id"
 t.datetime "created_at"
 t.datetime "updated_at"
end

create_table "user_lvls", force: true do |t|
 [omited some information]
 t.datetime "created_at"
 t.datetime "updated_at"
end

1 个答案:

答案 0 :(得分:2)

您可能希望使用belongs_to关联而不是has_one,如下所示:

class User < ActiveRecord::Base
  belongs_to :user_lvl
end

您的外键放在users表中,这使得User属于UserLvl的{​​{1}}。