Rails动态验证

phl*_*egx 6 validation ruby-on-rails dynamic

如何在rails中动态配置验证?例如,如果我有

validates_length_of :name, within => dynamic
Run Code Online (Sandbox Code Playgroud)

变量"dynamic"将由用户设置.在保存时,验证应使用变量"dynamic"的值来配置内部配置.

rya*_*anb 13

我不相信validates_length_of支持动态参数.您需要在自定义验证中复制该行为.

# in model
def validate
  unless (5..10).member? name.length
    errors.add :name, "must be within 5 to 10 characters"
  end
end
Run Code Online (Sandbox Code Playgroud)

它使用静态范围,但您可以轻松使用自己的自定义范围变量.

def validate
  unless some_range.member? name.length
    errors.add :name, "must be within #{some_range.first} to #{some_range.last} characters"
  end
end
Run Code Online (Sandbox Code Playgroud)

您可能想查看我的日常活动记录系列中有条件验证和第3集的Railscasts剧集.