Module: Redmine::Acts::Watchable::ClassMethods

Defined in:
lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb

Overview

Since:

  • 0.5.1

Instance Method Summary collapse

Instance Method Details

#acts_as_watchable(options = {}) ⇒ Object

Since:

  • 2.0.0



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 10

def acts_as_watchable(options = {})
  return if self.included_modules.include?(Redmine::Acts::Watchable::InstanceMethods)
  class_eval do
    has_many :watchers, :as => :watchable, :dependent => :delete_all
    has_many :watcher_users, :through => :watchers, :source => :user, :validate => false

    scope :watched_by, lambda { |user_id|
      joins(:watchers).
      where("#{Watcher.table_name}.user_id = ?", user_id)
    }
    attr_protected :watcher_ids, :watcher_user_ids
  end
  send :include, Redmine::Acts::Watchable::InstanceMethods
  alias_method_chain :watcher_user_ids=, :uniq_ids
end