是否有一種簡單的方法來驗證不包含子字符串的字段。我想要一個不包含'yahoo.com'的電子郵件字段。如果它包含'yahoo.com',我將會返回一個錯誤消息。rails model validattion(不包含子字符串)
回答
無需添加自定義驗證只使用Rails的validates_format_for
validates_format_of :email, without: /yahoo\.com/i, message: "your custom message"
查看文檔 http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_format_of
謝謝,如何不包含yahoo.com和hotmail.com? – wwli
如果您要添加複雜性,並添加多個不想在其中存在的文本,則應在下面演示自定義匹配器 - 您確實應該在一個地方將其隔離,以便隔離對該地點的更改 –
你只需要調整正則表達式爲:validates_format_of:email,不需要:/(yahoo|hotmail)\.com/i,消息:「你的自定義消息」 –
由於意見建議 - 建立一個自定義的驗證
require 'active_model'
class NotYahooEmailValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
if value.include? "yahoo.com"
object.errors[attribute] << (options[:message] || "is a yahoo.com email address")
end
end
end
你會使用這個如下:
class User < ActiveRecord::Base
validates :email, :presence => true, :not_yahoo_email => true
end
您是不是指'NotYahooEmailValidator'? :) –
有趣的是,只是添加更正,因爲你鍵入評論:-) ...偉大的思想想 –
- 1. 檢查字符串是否包含字(不是子字符串!)
- 2. C#字符串不包含
- 3. Rails:驗證包含字符串
- 4. 正則表達式匹配包含子字符串,但不包括子字符串的字符串
- 5. 字符串包含
- 6. 字符串包含
- 7. 包含字符串
- 8. 當字符串包含[]字符時替換字符串中的子字符串
- 9. SQL - 包含多個子字符串?
- 10. 如果句子包含字符串
- 11. 從包含問題的字符串中移除子字符串
- 12. jquery驗證字符串包含確切的子字符串
- 13. 打印包含指定子字符串的所有字符串
- 14. 檢查包含子字符串列表的字符串
- 15. 從包含特殊字符的字符串中提取子串
- 16. 檢查字符串是否包含子字符串
- 17. PHP字符串包含一個子字符串
- 18. 當字符串包含'{}'字符時不能組合字符串
- 19. 檢查字符串包含字符串
- 20. PySpark包含字符串
- 21. 正則表達式的字符串不包含子串
- 22. 匹配一個字符串,但不包含它包含另一個字符串
- 23. 查找包含字符串數組中子字符串的所有字符串
- 24. Mongoose查詢字段不包含子字符串
- 25. 檢查字符串是否包含單詞(不是一個句子字符串)
- 26. 哪個正則表達式查找不包含子字符串的字符串?
- 27. 包含多達n個字符的子字符串控制字
- 28. 如何過濾所有包含字符串但不包含子字符串的Apache URL
- 29. 如何在子字符串包含等號時執行子字符串替換?
- 30. 正則表達式 - 記事本++ - 搜索包含字符串且不包含其他字符串的字符串
編寫您自己的自定義驗證程序似乎是實現此目的最簡單的方法 http://guides.rubyonrails.org/v3.2.13/active_record_validations_callbacks.html#custom-validators –