【发布时间】:2014-02-02 18:59:18
【问题描述】:
我有一个模型User.rb 那个accepts_nested_attributes_for :address
user.rb
has_one :address
accepts_nested_attributes_for :address
address.rb
belongs_to :user
当我尝试使用 Rails 控制台对其进行测试时,会发生以下情况
user = User.find(157)
用户负载 (1.5ms) SELECT "users". FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 157]]*
#
user.address.phone
UserAddress Load (0.8ms) SELECT "addresses". FROM "addresses" WHERE "addresses"."type" IN ('UserAddress') AND "addresses"."user_id" = $1 ORDER通过“地址”。“id”ASC LIMIT 1 [[“user_id”, 157]]
“1234567”
到目前为止还不错。但是,以下方法不起作用:
user.update(:address_attributes => {:phone => "888888"})
它抛出
ActiveRecord::StatementInvalid: PG::NotNullViolation: ERROR: null value in column "user_id" violates not-null constraint
SQL 对我来说没有多大意义
UPDATE "addresses" SET "user_id" = $1, "updated_at" = $2 WHERE "addresses"."type" IN ('UserAddress') AND "addresses"."id" = 128 [["user_id", nil], ["updated_at", Sun, 02 Feb 2014 19:55:07 CET +01:00]]
当我实际更新phone 属性时,为什么它会尝试用nil 更新user_id?
【问题讨论】:
标签: ruby-on-rails nested-attributes