【问题标题】:Access to old association inside Rails/ActiveRecord callback访问 Rails/ActiveRecord 回调中的旧关联
【发布时间】:2013-09-23 21:34:41
【问题描述】:

在我的 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 存在。

【问题讨论】:

  • 您是否从中得到任何错误,或者输出不是您所期望的?我无法从你的问题中得到答案。
  • @depa - 没有错误,似乎 Rails 应该有更简单的方法......

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


【解决方案1】:

从上下文中我不清楚你到底在做什么(也许第二个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
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2011-03-04
    • 2021-11-30
    • 2010-10-06
    • 2011-12-15
    • 1970-01-01
    相关资源
    最近更新 更多