减少控制器中每个“创建和更新”操作的信用。 Rails 4

时间:2015-12-07 12:20:40

标签: ruby-on-rails ruby-on-rails-4 controller

@user.credit每次User进行更改或更新时,如何减少Entity Controller。我必须在User控制台的Entity表中进行更改才能执行此操作。

这样做的目的是应用程序在数据库中收取金钱/信用额度。

2 个答案:

答案 0 :(得分:1)

您需要在after_create模型中进行Entity回调。

class Entity < ActiveRecord::Base
  belongs_to :user
  after_save :update_user_credits
  def update_user_credits
    User.update_counters user_id, credits: -1
  end
end

答案 1 :(得分:0)

要添加到bcd的答案,您最好更改user关联对象,而不是调用全新的SQL调用:

#app/models/entity.rb
class Entity < ActiveRecord::Base
   belongs_to :user
   after_save :update_credits

   private

   def update_credits
      self.user.decrement! :credit
   end
end

Refs for the decrement! method