我有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
答案 0 :(得分:2)
您可能希望使用belongs_to
关联而不是has_one
,如下所示:
class User < ActiveRecord::Base
belongs_to :user_lvl
end
您的外键放在users
表中,这使得User
属于UserLvl
的{{1}}。