首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Rails中删除使用instance_eval子句的验证?

如何在Rails中删除使用instance_eval子句的验证?
EN

Stack Overflow用户
提问于 2011-09-25 21:56:00
回答 18查看 15.3K关注 0票数 38

我想使用instance_eval来增强现有的类。原始定义包含验证,它要求存在某些字段,例如:

代码语言:javascript
运行
复制
class Dummy < ActiveRecord::Base
  validates :field, :presence => true 
end

现在,我想使用instance_eval (或任何其他方法,实际上)将其更改为optional:

代码语言:javascript
运行
复制
Dummy.instance_eval do
  ...
end

删除验证的正确语法是什么,因此该字段是可选的。我宁愿直接在模型层上做这件事,而不是在控制器或视图中进行奇怪的修改。使用instance_eval并不是必须的,但据我所知,这通常是增强Rails中类的最好方法。

编辑#1

一般来说,原始类是gem的一部分,我不想将其派生出来,也不想将其绑定到特定的发行版。一般的原因并不是很重要。简单地编辑原始模型的后果要比修补猴子严重得多。

EN

Stack Overflow用户

发布于 2014-05-26 01:29:44

在Rails 4.1中,

我可以做_validate_callbacks.clear。在我的例子中,我希望删除gem的所有验证,这样我就可以创建自己的验证。我在一个模块中做到了这一点,这个模块被打到了类中。

代码语言:javascript
运行
复制
Module #Name
   extend ActiveSupport::Concern
   included do
        _validate_callbacks.clear
        #add your own validations now
   end
end
票数 1
EN
查看全部 18 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7545938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档