有沒有一種方法只使用幾行代碼來驗證輸入字段?自定義驗證,兩行?
當我使用自定義驗證時,我不得不這樣做。
型號
class Search < ActiveRecord::Base
validates :email, :presence => true, :email => true
end
驗證
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors[attribute] << (options[:message] || "is not an email") unless
value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
end
end
這是我真正想做的事情。
class Search < ActiveRecord::Base
validates :email, :email => lambda do |record, value|
record.errors[:email] << "invalid field" unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
end
這可能嗎?
我只是要在這裏把這個... http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates – 2011-03-22 12:43:52
此外,驗證應在你的模型上,而不是你的控制器。 – 2011-03-22 12:44:27
@Beerlington要複製和粘貼,現在已經修復。 – Oleander 2011-07-06 08:10:13