在我目前的ROR项目中,我正在使用设计验证。在我的更改密码表单验证中,我在user
模型中使用以下代码
validates_presence_of :password, :password_confirmation
但我想验证只是一个动作。我的用户控制器中有一个名为update_password
的函数。我发现我可以按如下方式分配操作:
validates_presence_of :password, :password_confirmation, :on => :update_password
但它不起作用。即使密码和密码确认字段为空,也会提交表单。任何人都可以帮我解决如何仅为特定操作设置验证。将是一个很大的帮助
非常感谢
答案 0 :(得分:2)
您可以使用:在设计中实现的validatable选项。 只需添加到您的模型
devise :validatable
并在config/initializers/devise.rb
文件中设置验证选项
# ==> Configuration for :validatable
# Range for password length. Default is 6..128.
config.password_length = 6..128
# Email regex used to validate email formats. It simply asserts that
# an one (and only one) @ exists in the given string. This is mainly
# to give user feedback and not to assert the e-mail validity.
config.email_regexp = /\A[^@]+@[^@]+\z/
另一种方法是使用自己的正则表达式验证。您可以添加到您的模型
validates :password, :format => { :with => /\A[a-zA-Z]+\z/, :message => "Only letters allowed" }
之后你可以打电话给@ user.valid吗?在您的控制器中检查您的用户实例是否正确。
验证模型的方法有很多种。 您可以在指南中阅读有关验证和ActiveRecord回调的更多信息:http://guides.rubyonrails.org/active_record_validations_callbacks.html
答案 1 :(得分:0)
如果您正在使用设计,则无需检查。它默认为你处理。