在 Rails 中单独在特定控制器上创建之前跳过

2024-01-01

如何在 Rails 中单独跳过特定控制器上的 before_create

example

     class User < ActiveRecord::Base
        before_create :validate_email
        def validate_email
            ----
        end
     end

我希望仅在此控制器上跳过此操作,

     class FriendsController < ApplicationController
          def new
          end
          def create
          end
     end

这是一个 hack,但您可以向模型类添加一个虚拟属性,该属性只是充当一个标志来指示回调是否应该运行。然后控制器操作可以设置标志。就像是:

class User < ActiveRecord::Base   
  before_create :validate_email, :unless => :skip_validation
  attr_accessor :skip_validation 

  def validate_email 
    ...
  end 
end 

class FriendsController < ApplicationController          
  def create          
    @user = User.find # etc...
    @user.skip_validation = true
    @user.save
  end          
end

我不确定是否before_create回调的:unless选项可以直接引用虚拟属性的名称。如果不能,那么您可以将其设置为模型中方法名称的符号,然后简单地让该方法返回skip_validation属性的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rails 中单独在特定控制器上创建之前跳过 的相关文章

随机推荐

  • 从大表达式中提取与模式匹配的表达式

    我有一个包含单个平方根的 Mathematica 表达式 示意性地 expr a b Sqrt c where a b c是大表达式 我想提取 sqrt 下的表达式 例如通过匹配模式 例如 Match expr Sqrt x should
  • 如何在 Liferay 中检索用户个人资料图片

    我想检索用户个人资料图片 我该怎么做 您能分享一下代码片段吗 我使用 Liferay 6 0 6 它只有 user getPortraitId 而没有 user getPortraitURL 那么一旦我在 JAVA 类中获得了肖像 id 我
  • Modaldialog 对 Enter/ESC 没有反应

    I have a modaldialog with an OK and a Cancel button For the OK I set the Default property to True and for the Cancel but
  • 如何在Java中使用keystore来存储私钥?

    我用过KeyPairGenerator生成 RSA 密钥对 如果我没记错的话 KeyStore 仅用于存储证书而不是密钥 如何在电脑上正确存储私钥 注意 此代码仅用于演示目的 将私钥存储在磁盘上时必须对其进行加密 不要按原样使用它 你可以这
  • 时间:2019-05-17 标签:c#MainWindowHandlealwayszero

    我读了一些关于 MainWindowHandle 的线程 但我找不到问题的解决方案 我正在启动一个 gui 应用程序 并希望通过进程对象获取 MainWindowHandle 但如果我不打算 则句柄值始终为零等待 thread sleep
  • 自动或使用快捷方式删除尾随空格

    有没有办法删除 Visual Studio Code 中的尾随空格 自动或使用快捷方式 我一直在命令选项板和编辑器设置中寻找此内容 但找不到我要找的内容 您可以启用空白修剪文件保存时间从设置 打开 Visual Studio Code 用户
  • zone.js 和 Jasmine 时钟之间的冲突

    我正在使用 Jasmine 测试套件 其中包括 普通 Jasmine 测试以及一些 Angular 2 组件的 Jasmine 测试 由于 Angular 2 的包含 zone js 被加载 这与 Jasmine 的时钟产生了冲突 例如 以
  • 为什么不在构造函数中调用可重写的方法?

    这是一个过于简化的示例 但我有一些现实生活中的代码在概念上执行相同的操作 尝试验证派生类的值 设置 访问器方法 并且分析器给我 不要在构造函数中调用可重写的方法 我试图弄清楚是否应该更改代码 或者忽略警告 我想不出有什么理由应该留意这个警告
  • 前向声明 cv::Mat

    您好 我正在尝试转发声明 cv Mat 类 但我无法让它工作 它给出了消息字段 frame 的类型不完整 OpenGlImpl h namespace cv class Mat class OpenGLImpl private cv Mat
  • 删除所有构造函数(或其他函数)的最佳样式?

    假设我想创建一个无法构造的类型 不要问为什么 struct Impossible 我可以这样做 Impossible delete disable automatically generated constructors don t dec
  • 如何获取Vim中所有环境变量的列表?

    当 Vim 启动时 它会从操作系统获取许多环境变量 例如PATH 并且它还设置了自己的环境变量 例如MYVIMRC 我如何list或者查看 Vim 理解的所有环境变量 以及 Vim 内部它们各自的值 在 Vimscript 中 没有直接的方
  • Firebase 身份验证/未经授权的域。域名未授权

    我正在尝试运行这个sample https github com firebase functions samples tree master quickstarts email usersfirebase 项目 但我不断在浏览器控制台中收
  • Jquery.inputmask 不工作

    尝试使用 Robin Herbots Inputmask 模块 但无法使其工作 查看所有其他类似的帖子 一个常见问题是确保 docment ready 函数调用 inputmask 但这对我来说看起来很好 Scripts
  • 将 CDN url 添加到 mvc 4 捆绑器输出

    使用内置的 MVC4 捆绑器 如何将我的 CDN url 添加到它生成的链接标签中 我已经设置了 Amazon Cloudfront 以便它在第一次请求时从我的网络服务器中提取资产 所以当我像这样定义一个包时 bundles Add new
  • 本地运行 jekyll 时出错(rvm gemset 问题)

    我通过 RVM 安装了 ruby 1 9 3 现在想要获取 rekyll gem 以便我可以在本地测试我的博客 当我gem install jekyll它安装正常 但是当我尝试运行时jekyll server我收到错误 Users matt
  • 指向具有多个对象的成员函数的指针向量 C++

    考虑以下代码 class A public void aFoo class B public void bFoo class C public void c1Foo void c2Foo 无论代码架构如何 是否可以创建指向成员函数的指针向量
  • Azure DevOps 中的代理作业和部署组作业有什么区别?

    Azure DevOps 中的代理作业和部署组作业有什么区别 创建其中之一的原因是什么 代理作业和部署组之间有什么区别 在 Azure DevOps 工作 代理工作 运行步骤在代理上其中在一个 部署组作业 Run 在机器上 in a 部署组
  • 使用 iCloud 共享 plist 文件

    我有一个相对简单的应用程序 它将数据保存到位于文档文件夹中的 plist 文件中 数据在启动时加载到 UITableView 中 然后 用户可以编辑 删除或添加记录 任何更改都会保存回 plist 文件 现在我想使用 iCloud 在设备之
  • 使用带有 mousedown、mousemove、mouseup 的 jquery 函数跟随 div [重复]

    这个问题在这里已经有答案了 我想制作一个 jquery 函数 当 div 处于 mousedown 状态时跟随 div 因此 当鼠标移动时 当鼠标按钮按下时 我页面上的 div 跟随光标 当鼠标按钮抬起时 div 停留在鼠标按下的最后位置
  • 在 Rails 中单独在特定控制器上创建之前跳过

    如何在 Rails 中单独跳过特定控制器上的 before create example class User lt ActiveRecord Base before create validate email def validate e