gpt4 book ai didi

ruby-on-rails - 如何为 ActiveRecord belongs_to 关联声明可选条件?

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:45 25 4
gpt4 key购买 nike

Rails ActiveRecord 为 belongs_to 提供了一个optional 选项。考虑允许外键为 null 并允许关联在对象创建期间为 null 但在后续保存期间需要它存在的用例。例如,新成员可能没有初始组,但成员的任何进一步更新都需要组关联。

optional 选项值本身可以是有条件的吗?例如,

class Member < ApplicationRecord
belongs_to :group, optional: -> { new_record? }
end

optional: true 的行为相同,我们可以推断 optional 选项解析仅检查真值。

自定义验证器是满足此用例的实用方法吗?

最佳答案

似乎向 optional 选项提供 lambda 不起作用(虽然我还没有尝试过)。我看着 source code这就是 optional 的使用方式。

required = !reflection.options[:optional]

如果需要,Rails 只需像这样添加存在验证:

model.validates_presence_of reflection.name, message: :required

我相信你可以通过这样的方式走自定义路线:

class Member < ApplicationRecord
belongs_to :group, optional: true
validates :group, presence: true, on: :update
end

关于ruby-on-rails - 如何为 ActiveRecord belongs_to 关联声明可选条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036112/

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