新手问题 重载 has_secure_password 方法无效?想自定义它的错误信息!

qq2729877005 · 2017年07月20日 · 最后由 qq2729877005 回复于 2017年07月21日 · 1361 次阅读

你怎么重载的啊。。。

像 java 那样重载方法不行吗?

jasl 回复

像 java 那样重载方法不行吗?

jasl 回复
#!/usr/bin/ruby -w

# 定义类
class Box
   # 构造器方法
   def initialize(w,h)
      @width, @height = w, h
   end
   # 实例方法
   def getArea
      @width * @height
   end
end

# 定义子类
class BigBox < Box

   # 改变已有的 getArea 方法
   def getArea
      @area = @width * @height
      puts "Big box area is : #@area"
   end
end

类似这样的,不可以吗?如果不可以的话,那还有什么方法自定义 has_secure_password 的错误信息吗?

qq2729877005 回复

你给的这个例子没问题啊... 你的问题不是问重载 has_secure_password 无效么。。。你要让别人知道你是怎么做的才能知道问题出在哪了啊,万一是拼写之类的低级错误呢?

jasl 回复

解决了,谢谢,我把 has_secure_password 的验证关了,自己设置验证,代码如下:

validates :password, confirmation: {message: "二次密码不一致"},
                     presence: {message: "密码不能为空"}
validates :password_confirmation, presence: {message: "二次密码不能为空"}
has_secure_password validations: false
qq2729877005 回复

哦 你只是要改验证失败的文案的话,根本用不到这样的,那些错误的文案都是 i18n 控制的,参考 https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml#L109

jasl 回复

🙀 长见识了,大神,666

jasl 回复

不过,这文件在哪啊? 要如何配置呢?

qq2729877005 回复

你装那个 rails-i18n 的 gem 吧,就我贴源码的那个,设置好 locale,除非你想搞点啥特别的,否则 Rails 自带的各种提示都不需要你翻译,要魔改就直接把中文的 yml 复制到你项目的 config/locales 下,去改,没有中文的直接把英文的复制过来,文件名和 yml 开头的语言声明改成 zh-CN 然后翻译

其他流行 gem,devise kaminari 之类,都有类似的 i18n 项目,没有的话,用类似手法自己翻译

qq2729877005 回复

i18n 更详细的文档在 http://guides.rubyonrails.org/i18n.html

你这问题确实算偏的了,经常翻翻那个 guides 能发现很多偏门的东西(知道了就大幅提高效率那种),但这个我还特意回去翻了下文档,完全没找到在哪有讲

谢谢,麻烦了,谢谢帮忙🎉

qq2729877005 关闭了讨论。 07月22日 14:03
需要 登录 后方可回复, 如果你还没有账号请 注册新账号