Module: Horde::Actions::FollowMethods::TargetMethods::ClassMethods

Defined in:
lib/horde/actions/follow.rb

Instance Method Summary collapse

Instance Method Details

#create_follow_associationsObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/horde/actions/follow.rb', line 72

def create_follow_associations
  target_class_name = self.name   # like "Article", "Photo"
  assn_name = "followed_#{target_class_name.tableize}"   # "followed_articles"

  # define belongs_to here because Setting.actor_clas_name has not been set
  ::Horde::Follow.belongs_to :follower, 
                      :foreign_key => :actor_id,
                      :class_name => Horde::Setting.actor_class_name

  # follow.followed_article, this is created for
  # user.followed_articles to work.
  ::Horde::Follow.belongs_to assn_name.singularize.to_sym, 
                      :foreign_key => :target_id,
                      :class_name => target_class_name

  Horde::Setting.actor_class_name.constantize.instance_eval do
    include ActorMethods

    # user.followed_articles
    has_many assn_name, 
             :through => :created_follows,
             :source => assn_name.singularize,
             :conditions => {:"horde_follows.target_type" => target_class_name}
  end
end