我想使用instance_eval增强现有的类.原始定义包含验证,需要存在某些字段,即:
class Dummy < ActiveRecord::Base
validates :field, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
现在我想使用instance_eval(或任何其他方法,实际上)将其更改为可选:
Dummy.instance_eval do
...
end
Run Code Online (Sandbox Code Playgroud)
删除验证的正确语法是什么,因此该字段是可选的.我宁愿直接在模型层上执行此操作,而是在控制器或视图中执行奇怪的操作.实际上并不需要使用instance_eval,但据我所知,这通常是增强Rails中类的最佳方法.
编辑#1
一般来说 - 原始类是gem的一部分,我不想分叉它,也不想绑定到特定的版本.一般原因并不重要.简单地编辑原始模型比猴子修补具有更糟糕的后果.
我正在考虑将CakePHP应用程序中的身份验证移动到Rails Devise.但是,我们的网站使用用户名作为唯一标识符而不是电子邮件,因为家庭通常在多个帐户上使用相同的电子邮件地址.
默认情况下,Devise使用电子邮件作为唯一标识符 - 使用Devise时是否可以使用相同的电子邮件地址?