Rails ActiveRecord 在 after_save 回调中使用最近保存的记录 ID [关闭]

Posted

技术标签:

【中文标题】Rails ActiveRecord 在 after_save 回调中使用最近保存的记录 ID [关闭]【英文标题】:Rails ActiveRecord using recently saved record id in after_save callback [closed] 【发布时间】:2011-04-27 13:58:17 【问题描述】:

我想在 after_save 回调中使用最近存储的记录 ID,如果可以,可以吗?

after_save :create_children def create_children  self.id end

更新: 对不起,我的保存功能出了点问题,我的错,很抱歉浪费你的时间

谢谢

【问题讨论】:

【参考方案1】:

我刚刚试过这个:

 class Thing < ActiveRecord::Base
   after_save :test_me

   def test_me
     puts self.id
   end
 end

在控制台中:

$ rails c
Loading development environment (Rails 3.0.4)
>> x=Thing.new
=> #<Thing id: nil, name: nil, created_at: nil, updated_at: nil>
>> x.save
2
=> true
>> y=Thing.create
3
=> #<Thing id: 3, name: nil, created_at: "2011-04-27 15:57:03", updated_at: "2011-04-27 15:57:03">

您的模型中还发生了什么?

【讨论】:

至少在mysql中,自增id列必须设置为主键。我遇到了一个问题,我的主键由两个字段组成——因此 ActiveRecord 不会读取 Id。我将其更改为仅 ID 字段,代码开始工作。【参考方案2】:

如果你在保存对象后调用 reload(),self.id 将被填充

【讨论】:

我试过了,还是不行 我尝试使用 after_create 也没有成功 建议:如果是后期处理,不应该影响模型对象的保存,你可以在after_commit回调中进行

以上是关于Rails ActiveRecord 在 after_save 回调中使用最近保存的记录 ID [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Rails:如何在 ActiveRecord 中设置默认值?

Rails/Arel:选择所有记录作为 ActiveRecord::Relation

Rails 4,ActiveRecord,查找当前用户未评论的所有帖子

如何在 Rails 中链接原始 SQL 查询或如何从 Rails 中的原始 SQL 查询返回 ActiveRecord_Relation?

禁用 Rails 4 的 ActiveRecord

Rails ActiveRecord关系无效外键错误