我必须有条件地验证我的User
. 用户注册后,他可以完成其余的个人资料。它分为几部分,例如,有“教育背景”和“专业背景”。这些部分由我必须验证的字段组成(例如存在)。
因此,当然,这些字段不应在注册期间进行验证,而应仅在用户尝试编辑这些字段时进行。一个自然的想法是context
在表单中发送一个参数,然后执行以下操作:
class User < ActiveRecord::Base
attr_accessor :context
with_options if: -> { |u| u.context == "educational" } do |s|
s.validates :university_name, presence: true
# ...
end
end
但是,如果我还需要在块内进行条件验证怎么办:
class User < ActiveRecord::Base
attr_accessor :context
with_options if: -> { |u| u.context == "educational" } do |s|
s.validates :university_name, presence: true, if: :finished_university?
# ...
end
end
这意味着那些 to :if
s 将发生冲突。我可以:if
将块中的every转换为:unless
,但这会损害可读性,我真的不希望这样。
这个问题还有其他解决方案吗?