在 ActiveRecord 中返回最近创建的对象的最佳方式?

Joe*_*era 1 ruby activerecord ruby-on-rails rails-activerecord

我正在创建一个对象,调用该对象时将创建一个数据库记录,并且我希望此函数返回新创建的对象。这就是我得到的:

data = {foo: 'foo', bar: 'bar'}

Dummy.new(data).save! # true
Dummy.last # newest record in the database
Run Code Online (Sandbox Code Playgroud)

我担心当同一数据库上有多个会话时这意味着什么。有没有一种可靠的方法可以获取我刚刚创建的记录?

spi*_*ann 5

只需将您创建的实例分配给一个变量即可:

data = { foo: 'foo', bar: 'bar' }

dummy = Dummy.new(data)
dummy.save!
dummy # the record you just created
Run Code Online (Sandbox Code Playgroud)

或者使用create!而不是newsave!这样:

data = { foo: 'foo', bar: 'bar' }

Dummy.create!(data) # returns the created instance or raises an error if not successful
Run Code Online (Sandbox Code Playgroud)