【发布时间】:2013-04-22 08:33:04
【问题描述】:
我必须有条件地验证我的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
这意味着:ifs 的那些人会发生冲突。我可以将块中的每个:if 转换为:unless,但这会损害可读性,我真的不希望这样。
这个问题还有其他解决方案吗?
【问题讨论】:
-
同样的问题,但这里没有令人满意的答案:stackoverflow.com/questions/13174435/…
标签: ruby-on-rails ruby validation rails-activerecord