Ruby on rails 基于角色的验证
对,所以我有一个用户表和不同的用户。在将用户表移动到主站点之前,我需要在更新时验证它们 到目前为止,我刚刚完成了以下工作,是否有一种方法可以根据角色阻止验证,而无需执行自定义验证方法,如使用_options:on=>:update 验证前:检查\u角色Ruby on rails 基于角色的验证,ruby-on-rails,validation,Ruby On Rails,Validation,对,所以我有一个用户表和不同的用户。在将用户表移动到主站点之前,我需要在更新时验证它们 到目前为止,我刚刚完成了以下工作,是否有一种方法可以根据角色阻止验证,而无需执行自定义验证方法,如使用_options:on=>:update 验证前:检查\u角色 if check_role = "developer" do |dev| dev.validate :first_name, presence: true # this doesn't work btw... end def chec
if check_role = "developer" do |dev|
dev.validate :first_name, presence: true # this doesn't work btw...
end
def check_role
return self.role_type unless self.role_type == nil
end
我想出来了,这似乎是最好的方法:
class YourModel
with_options :if => lambda { |o| o.whatever == "whatever" } do |on_condition|
on_condition.validates_presence_of :address
on_condition.validates_presence_of :city
end
with_options :if => lambda { |o| o.condition_the_second == "whatever" } do |on_condition|
on_condition.validates_presence_of :foo
on_condition.validates_presence_of :bar
end
end
我必须对每一列执行该过程,还是可以在块中调用它?我想在块中执行该过程,这样我就可以在每一行上都不使用if进行所有验证。保持干燥…您可以组合验证条件,以便仅使用一次
if
。
validates :first_name, presence: true, if: :developer?
def developer?
role == 'developer'
end
class YourModel
with_options :if => lambda { |o| o.whatever == "whatever" } do |on_condition|
on_condition.validates_presence_of :address
on_condition.validates_presence_of :city
end
with_options :if => lambda { |o| o.condition_the_second == "whatever" } do |on_condition|
on_condition.validates_presence_of :foo
on_condition.validates_presence_of :bar
end
end