我有一个看起来很简单的代码,让我在这个地方摸不着头脑。
这是一个用户模型:
class User < ActiveRecord::Base
has_one :api_account, inverse_of: :user, dependent: :destroy
# Other user-specific validations come after
这是关联的 api_account:
class ApiAccount < ACtiveRecord::Base
belongs_to :user, inverse_of: :api_account
validates :access_token, presence: true
validates :user, presence: true,
uniqueness: true
在 api_account 控制器中,我有:
response = ### Some JSON response from a distant server
@api_account = @user.create_api_account(:access_token => response[:access_token])
api_account 的架构如下所示:
create_table "api_accounts", force: true do |t|
t.text "access_token"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end
add_index "api_account", ["user_id"], name: "index_api_accounts_on_user_id"
每当我运行代码时,我都会在响应变量中获得访问令牌。当我使用 rails 控制台检查数据库时,我看到一个保存的实例具有有效的创建和更新时间,但 access_token 和 user_id 的值为零。
首先,我仍然不明白为什么这两个字段有 nil 值。其次,为什么他们用 nil 值保存(即通过验证)。
任何帮助都将受到欢迎。不过,我感觉到一个掌心来了!:)