を条件付きで検証する必要があります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 が衝突します。ブロック内のevery を に変換することもできますが、これは可読性を損なうので、本当にそうしたくありません。:if
:unless
この問題の別の解決策はありますか?