【问题标题】:Rails Ruby merit gem observer is not workingRails Ruby 优点 gem 观察者不起作用
【发布时间】:2014-07-09 06:02:45
【问题描述】:

我在我的 Rails 项目中使用了 Merit Gem,而 Merit Observer 根本没有工作。 我的 app/observers/ 文件夹中有reputation_change_observer.rb

#reputation_change_observer.rb
class ReputationChangeObserver
observe :user
def update(changed_data)
   description = changed_data[:description]

   # If user is your meritable model, you can query for it doing:
   user = User.where(sash_id: changed_data[:sash_id]).first

   user.update_life_time_point
   user.give_badges

   # When did it happened:
   datetime = changed_data[:granted_at]
  end
end

当声誉发生变化时,我会更新用户的生命时间点。如果用户点达到某个点,则给出徽章。但这两个功能不起作用。有人有什么想法吗?会是什么问题?

【问题讨论】:

  • 你用的是什么版本的优点?您是否按照github.com/tute/merit#getting-notifications 中的说明进行操作?最近我做了一个相关的错误修复版本,2.1.2,如果你可以升级它会变得更容易。

标签: ruby-on-rails ruby ruby-on-rails-3 merit-gem


【解决方案1】:

在 app/observers/reputation_observer.rb 中

class ReputationObserver < ActiveRecord::Observer

  def after_update(reputation)
    # use reputation.previous_changes to get the last changes in reputation object and accordingly write your logic
  end

end

在 config/application.rb 中(激活信誉观察者)

config.active_record.observers = :reputation_observer

【讨论】:

  • 其实我忘记在application.rb中添加这一行了。我添加了它。之后我得到了一个 NameError: uninitialized constant ReputationChangeObserver (NameError) 我在观察者中添加了 observe :user 来修复它。但是优点功能根本不起作用。
  • 我已经添加了上面与 ActiveRecord::Observer 相关的代码,但是您使用的是优点 gem。在这种情况下,您需要添加 config.add_observer 'ReputationChangeObserver' # In config/initializers/merit.rb
猜你喜欢
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2014-03-24
  • 2012-10-29
相关资源
最近更新 更多