2017-03-10 2 views
1

j'ai essayé de valider l'unicité du couple (: nom et: type) avec Sequel ORM:Sequel rubis validates_unique insensible à la casse

def validate 
    super  
    validates_unique [:name, :type] 
end 

Mais Sequel est par défaut à la casse. Comment puis-je valider ceci avec la casse insensible (ne pas se soucier de upcase ou downcase)? Comme une manière similaire ActiveRecord:

validates_uniqueness_of :name, :case_sensitive => false

Répondre

0

Pas génial, mais from the docs:

# If you want to do a case insensitive uniqueness validation on a database that 
    # is case sensitive by default, you can use: 

    validates_unique :column, :where=>(proc do |ds, obj, cols| 
    ds.where(cols.map do |c| 
     v = obj.send(c) 
     v = v.downcase if v 
     [Sequel.function(:lower, c), v] 
    end) 
    end) 
+0

Merci, je peux même valider plusieurs colonnes: 'validates_unique [: type,: nom]' – hiepph