访问Rails / ActiveRecord回调中的旧关联

时间:2013-09-23 21:34:41

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-4 rails-activerecord

在我的Rails回调中,我有类似的东西:

private
def update_points
  if user_id_changed?
    user_was = User.find(user_id_was)
    user_was.points -= points_was
    user_was.save
    user.points += points
    user.save
  end
end

这是使用user_was执行此操作的正确方法吗?我最初假设user_was已经定义(或者可以在现场定义),因为user_id_was已存在。

1 个答案:

答案 0 :(得分:0)

从上下文中我不清楚你到底在做什么(也许第二points应该是points_was?)。为了略微提高清晰度,取决于您的要求,以及更少的线条:

...
  user_was = User.find(user_id_was)
  user_was.update_column :points, user_was.points - points_was
  user.update_column     :points, user.points     + points
...