Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >等效于"after_new“的Rails回调

等效于"after_new“的Rails回调
EN

Stack Overflow用户
提问于 2010-05-14 17:26:31
回答 3查看 7.6K关注 0票数 18

现在我找不到在这里的第1行和第2行之间生成回调的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f = Foo.new
f.some_call
f.save!

有没有办法模拟一个有效的after_new回调?现在我正在使用after_initialize,但是使用它会有潜在的性能问题,因为它会触发很多不同的事件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-22 09:50:11

您可以使用after_initialize回调

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# app/models/foo.rb
class Foo < ActiveRecord::Base
  after_initialize :some_call

  def some_call
    puts "Who you gonna call?"
  end
end

# rails console
> foo = Foo.new # => "Who you gonna call?"
> foo = Foo.first # => "Who you gonna call?"

注意,每次ActiveRecord执行Foo.new (如newfindfirst等调用)查看Rails Guide时,都会触发after_initialize

所以你可能想要像这样的after_initialize :some_call, :if => :new_record?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# app/models/foo.rb
class Foo < ActiveRecord::Base
  after_initialize :some_call, :if => :new_record?

  def some_call
    puts "Who you gonna call?"
  end
end

# rails console
> foo = Foo.new # => "Who you gonna call?"
> foo = Foo.first
票数 47
EN

Stack Overflow用户

发布于 2010-05-14 17:29:10

Foo定义一个构造函数,并在其中执行所需的操作。

另一种解决方案是考虑使用after_initialize,但这可能并不完全符合您的期望。

票数 4
EN

Stack Overflow用户

发布于 2010-05-15 01:30:11

如果这是一个活动记录模型,那么在创建对象之后,after_initialize是处理回调的正确方法。框架本身对从数据库创建对象的方式做出了某些假设。性能不应该是一个问题,除非你在回调中触发了一些长时间运行的任务,在这种情况下,你可能需要重新考虑策略。

如果不是AR模型,您可以在对象中创建初始化方法,并将代码放在那里。

根据您想要执行的操作,还有许多其他回调可用,包括after_create (在创建新记录时调用)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2836206

复制
相关文章
回调
回调简单而言:在一个类(A)的方法(a)中调用另一个类(B)的方法(b),当方法(b)执行完之后就调用类(A)中的方法(c),这就是回调的过程,是不是很简单?简单分析可以知道一个类(A)持有另一个类(B)的引用,方法(c)就叫做回调函数,画成UML图就如下所示:
晚上没宵夜
2020/03/10
2.6K0
回调函数的工作机制 回调函数的用途
在一般人的眼中,对回调函数并不是十分的了解。实际上,在现在的互联网技术上这种函数有着十分重要的地位。这种函数不仅仅可以使得编程的效率大大提升,还是实现一些特殊功能的必须组成部分。那么什么是回调函数?这样的函数究竟有什么作用?下面就来为大家介绍一下。
用户8739405
2021/07/09
6.8K0
Ajax 的回调
页面上有两个button,以上js代码为button添加click事件。会输出什么样的结果呢?
用户7293182
2022/01/17
4.4K0
Angularjs的回调
$q.reject() 方法是在你捕捉异常之后,又要把这个异常在回调链中传下去时使用:
星回
2018/08/02
1.7K0
​29 - 回调函数和回调地狱
原文地址:https://dev.to/bhagatparwinder/callback-functions-callback-hell-79n
前端黑板报
2022/12/01
4.6K0
什么是回调地狱?如何解决回调地狱问题_地狱回调
这个问题呢,需要从Node.js的API说起,这里就会有人问了?博主你不是说回调地狱的问题吗,怎么说到API了,别急,看博主一步一步的解释给你听:
全栈程序员站长
2022/11/15
3.2K0
七、回调
修改PspNotifyEnableMask为00000009,创建和退出进程时就不会触发回调
zhang_derek
2022/09/29
1.6K0
关于回调
爱学习的前端歌谣
2023/10/18
1850
关于回调
回调函数
什么是回调函数,上面的问题说的是不是很空洞,不是太形象,下面是知乎上的一位网友给的答案:
LiosWong
2018/10/29
3.8K0
回调函数
  有点类似模板的功能,可以使用函数指针作为参数,当调用函数时,使用void *进行传递参数,细致比较时,再用int *之类的进行强制转换。回调函数,其实就是在参数中定义函数,调用时,回到主函数去调用这个函数。仔细用法如下: 首先定义查找函数 Node * search_list(Node *node, void const *value, int (*compare)(void const *,void const *)){ while(node!=NULL){ if(compar
用户1154259
2018/01/17
3.3K0
回调函数
回调地狱
一个函数,作为参数的形式传给另一个函数调用,那么这个这个函数就叫做回调函数。 当然回调函数很常见,如下
用户4793865
2023/01/12
1.4K0
回调地狱
前言 从前一文中你真的了解回调?我们已知道回调函数是必须得依赖另一个函数执行调用,它是异步执行的,也就是需要时间等待,典型的例子就是Ajax应用,比如http请求,在不刷新浏览器的情况下,当你执行DO
itclanCoder
2020/10/28
2.3K0
回调地狱
回调函数
原文链接:https://note.noxussj.top/?source=cloudtencent 什么是回调函数? 简单的来说,一个函数作为另外一个函数的参数,可以称为回调函数。这个理解其实不完全
菜园前端
2023/05/20
1.7K0
RunTime的回调钩子
项目运行结束得时候可能需要对一些现有得信息进行保存。比如说我们在java进程退出得时候要保存一些数据,下次启动得时候要用到这些数据得情况。Java在1.3得时候就支持了这种特性。这种特性得实现就在类RunTime中。以下四种方式均可出发runtime得回调。
写一点笔记
2022/08/11
4770
RunTime的回调钩子
回调函数的理解
把A理解成客户端,把B理解成服务器。 A要访问B,让B做事。但是B做的慢,于是B就先返回给A一个正在处理的状态,等处理完了再通知A处理结果,那么这个A通知B的手段就是回调了。通常为了加强适配性(因为服务器只有一个,而客户端有多个),客户端都会实现接口C,再把C注入到服务器,那么服务器对外提供带有参数C的方法即可。
全栈程序员站长
2022/08/09
1.6K0
js函数的回调
以上只能回调没有参数的(除法你事先知道回调的函数的参数),如果函数有未知的函数,就不能如此简单的调用了。
全栈程序员站长
2022/08/25
4.5K0
srs的http回调
https://ossrs.net/lts/zh-cn/docs/v5/doc/http-callback
阿超
2023/10/18
4530
了不起的回调函数
关于js的回调函数,在各大平台已经被写烂了,我也看了很多别的大神写的帖子,我也在想怎么可以比较明白的将这个东西讲明白,今天我就尝试一下,认真看完,相信是有一些用处的。 想搞明白回调函数之前,先看懂我下面说的这段话, 有几个概念需要搞明白js中的同步和异步,或者叫阻塞和延迟,这就是为什么同步的函数有概率卡死,说直白一些,同步就是代码由上而下执行,中间如果有问题,那就等着,直到问题解决掉代码才会接着执行,但是我们在写js的过程中,其实很少有这种情况,原因是js本身就是一个异步编程语言,所谓的异步就是你慢没
何处锦绣不灰堆
2023/01/14
1.3K0
使用委托实现同步回调与异步回调
使用委托可以执行的一项有用操作是实现回调。回调是传入函数的方法,在函数结束执行时调用该方法。 例如,有一个执行一系列数学操作的函数。在调用该函数时,也向其传递一个回调方法,从而在函数完成其计算工作时,调用回调方法,向用户通知计算结果。 同步回调    首先声明两个方法: AddTwoNumbers():接受两个整型实参以及一个类型委托 ResultCallback():接受一个字符串,并显示出来。代码如下: using System; using System.Collections.Generic
hbbliyong
2018/03/05
3.1K0
使用委托实现同步回调与异步回调
Fragment回调Activity
如果你需要在fragment中处理一些事情,事情的处理结果或者你需要告 诉activity马上要做什么事,这时候就需要和activity进行通讯。包括很多fragment在viewpager中的情况,而且可以保证activity能即时进行响应。相比发送广播,性能更好,代码更少。
坑吭吭
2018/08/31
1.8K0

相似问题

Rails:跟踪回调

20

Rails ActiveRecord回调

20

rails模型回调

12

Rails - Turbolinks -回调

11

干掉Rails回调

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文