6

给定以下代码:

def create
  @something = Something.new(params[:something])
  thing = @something.thing # another model

  # modification of attributes on both 'something' and 'thing' omitted

  # do I need to wrap it inside a transaction block?  
  @something.save
  thing.save
end

将 create 方法隐式包装在 ActiveRecord 事务中,还是需要将其包装到事务块中?如果我确实需要包装它,这是最好的方法吗?

4

1 回答 1

4

简要回答:您需要将代码显式包装在事务块中。基本上,当您想要执行一组 SQL 语句时,您必须使用事务来维护引用完整性。

Something.transaction do 
  @something.save
  thing.save
end

进一步阅读:http ://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html

于 2012-07-03T04:30:16.873 回答