Rails 4 自定义 validate_uniqueness 消息

use*_*834 7 validation ruby-on-rails

是否有可能在错误消息中validate_uniqueness_of显示id已包含我正在检查唯一性的字段的记录?

edw*_*dmp 6

@vimsha 的解决方案可能有效,但我找到了一种更简洁的方法,允许仍然使用validates_uniqueness_of而不是创建自己的验证器:

validates_uniqueness_of :identifier, message: lambda{|x, y| "#{MyModel.find_by_identifier(y[:value]).id} is already taken" }
Run Code Online (Sandbox Code Playgroud)


ush*_*sha 3

尝试这样的事情

validate :uniqueness_of_name

def uniqueness_of_name
   existing_record = Model.find_by_name(name)
   unless existing_record.nil?
     errors.add(:name, "Record #{existing_record.id} already has the name #{name}")
   end
end
Run Code Online (Sandbox Code Playgroud)