Sequel ruby validates_unique 不区分大小写
Sequel ruby validates_unique case insensitive
我尝试使用 Sequel ORM 来验证一对(:name 和 :type)的唯一性:
def validate
super
validates_unique [:name, :type]
end
但是Sequel默认是区分大小写的。我如何在不区分大小写的情况下验证这一点(不关心大写或小写)?像ActiveRecord的类似方式:
validates_uniqueness_of :name, :case_sensitive => false
不太好,但是 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)
我尝试使用 Sequel ORM 来验证一对(:name 和 :type)的唯一性:
def validate
super
validates_unique [:name, :type]
end
但是Sequel默认是区分大小写的。我如何在不区分大小写的情况下验证这一点(不关心大写或小写)?像ActiveRecord的类似方式:
validates_uniqueness_of :name, :case_sensitive => false
不太好,但是 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)