我有一个Rails 3.2应用程序运行与设计2.3。我将电子邮件地址作为默认的认证密钥。当用户尝试使用现有的电子邮件地址创建新帐户时,我想向他显示登录和重置密码页面的链接。
有另一个问题的答案,建议如何在Rails中进行此操作,但它不能解决使用设计时的问题。当尝试在电子邮件上定义自定义验证时,服务器甚至不会启动。看这个糊状物。
是否有一种方法可以覆盖或劫持由设计添加的错误信息,以使用我自己的代替?或者有一种方法来添加全局插值值?
这是我想显示的信息:
taken: email already used, please <a href='%{login_link}'>login</a> or <a href='%{reset_link}'>reset your password</a>
应用程序试图显示它,但抱怨缺少插值键。我如何分配插值键与设计已经处理电子邮件上的验证?
这可能不是这个问题的典型示例,因为应用程序链接是相当静态的,在这里硬编码是可以的。如果要插入其他真正动态的值怎么办?
尝试从用户传递这些。rb文件
validates :email, :uniqueness => {:login_link => Rails.application.routes.url_helpers.new_user_session_path,
:reset_link => Rails.application.routes.url_helpers.new_user_password_path}
只要在身份验证模型上声明以下内容来使用设计的默认验证,这是不可能的:
devise :validatable
当使用设计时,为了在Rails中使用带有YAML语言环境文件的错误消息变量插值,必须手动声明所有验证,并且必须禁用设计提供的验证。
当尝试覆盖单个现有验证时,Rails 3.2在初始化期间失败。因此,当使用设计验证时,这是一个全进或全出的问题。