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/