所以我在使用Devise的Rails 4应用程序中验证了邀请代码。要使用设计创建帐户,用户必须输入验证代码。它看起来像这样:
class User < ActiveRecord::Base
validates :invite_code, inclusion: {
in: %w(foo347 bar362 foobarr100),
message: "Rails 4 app is invite only at this time, please sign up for a code."
}
它工作得很好,但我想让它不区分大小写,所以fOo347或BaR362会起作用。我尝试像这样做一个before_save:
before_save { |user| user.name = user.name.downcase }
按照此处的说明操作 Simple way to always make a field lowercase in db。
它不起作用,我认为因为它是验证。我还尝试将before_save
换成before_create
而没有运气。如何在该字段进入验证之前对其进行缩写?
答案 0 :(得分:2)
您应该使用before_validation
回调:
before_validation { self.user.name = self.user.name.downcase }
答案 1 :(得分:0)
你怎么能控制控制器上的参数?
或者您可以在validation callback之前使用taglia建议