我有一个模型User.rb
是accepts_nested_attributes_for :address
user.rb
has_one :address
accepts_nested_attributes_for :address
地址.rb
belongs_to :user
当我尝试使用Rails控制台对其进行测试时,会发生以下情况
user = User.find(157)
用户负载(1.5ms)选择“用户”。在“用户”中,在“用户”中。“ id” = $ 1 LIMIT 1 [[“ id”,157]] *
#<用户ID:157,名称:“ John Doe”,电子邮件:...
user.address.phone
UserAddress负载(0.8ms)选择“地址”。在“地址”中的“地址”中。“类型” IN(“ UserAddress”)和“地址”。“ user_id” = $ 1 ORDER BY“ addresses”。“ 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]]
为什么它尝试更新user_id
与nil
当我真正更新的phone
属性?
也许问题在于您没有使用正确的ActiveRecord
对象?
也许您可以尝试:
user.address.update_attributes({phone: "888888"})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句