Module: Horde::Actions::CommentMethods::TargetMethods::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#create_comment_associationsObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/horde/actions/comment.rb', line 67

def create_comment_associations
  target_class_name = self.name   # like "Article", "Photo"
  assn_name = "commented_#{target_class_name.tableize}"   # "commented_articles"

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

  # comment.commented_article, this is created for
  # user.commented_articles to work.
  ::Horde::Comment.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.commented_articles
    has_many assn_name, 
             :through => :created_comments,
             :source => assn_name.singularize,
             :conditions => {:"horde_comments.target_type" => target_class_name}
  end
end