我正在使用Rails模型验证来解决特定概念,请允许我解释一下;我的情况是,给定的用户可以使用多个不同的states
,基于此情况,我希望在模型上使用完全不同的验证器集,而仅使用这些验证器验证模型。
比方说,我的用户可以使用其中一个states
,' address_setup'和' billing_setup',我想要两个完全不同一组验证器,我可以以某种方式使用这样的块吗?
with_options if self.state == 'address_setup' do |user|
user.validates :first_name, :last_name, :address_1, :city, :state_code, :email
user.validates :state_code, inclusion: { :in => STATE_CODES }
end
显然,if
块的with_options
部分没有任何意义,这样做的最佳做法是什么?
答案 0 :(得分:0)
验证器中的if
选项怎么样?例如:
class User < ActiveRecord::Base
# ...
validates :state_code, inclusion: { :in => STATE_CODES },
if: Proc.new { |u| u.state == 'address_setup' }
# ...
end