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?