gpt4 book ai didi

ruby-on-rails - 保存父对象时如何确保子对象有效?

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:01 25 4
gpt4 key购买 nike

假设我有两个类(class)

class User
attr_accessible :name

has_one :address

validates :name, :presence => true
validates_associated :address
end

class Address
attr_accessible :country, :user_id

belongs_to :user

validates :country, :presence => true
validates :user, :presence => true
end

现在,当我尝试创建无效的 Address 时,它会失败(这很好)

a = Address.new
a.valid? #=> false

但是当我用无效的 Address 构建 User 时,它就通过了(这很糟糕)

u = User.first
u.build_address

u.valid? #=> true
u.save #=> true

由于这个 UserAddress with country => nil。

如果 Address 无效,我如何告诉 Rails 不保存它?

已修复:我通过在代码中添加以下行来修复此问题。谢谢大家。

validates_associated :address, :if => :address

最佳答案

class User
attr_accessible :name

has_one :address, :validate => true

validates :name, :presence => true
validates_associated :address

结束

关于ruby-on-rails - 保存父对象时如何确保子对象有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com