Skip to content

Commit

Permalink
Merge pull request #33 from luvtechno/luvtechno/default_options
Browse files Browse the repository at this point in the history
Merge options with default options at the beginning
  • Loading branch information
LTe committed Nov 22, 2012
2 parents 5387187 + 6fee85e commit ea72581
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions lib/acts-as-messageable/model.rb
Expand Up @@ -14,25 +14,33 @@ module ClassMethods
# @param [Array, Symbol] :required - required fields in message
# @param [Symbol] :dependent - dependent option from ActiveRecord has_many method
def acts_as_messageable(options = {})
has_many :received_messages_relation,
:as => :received_messageable,
:class_name => options[:class_name] || "ActsAsMessageable::Message",
:dependent => options[:dependent] || :nullify
has_many :sent_messages_relation,
default_options = {
:table_name => "messages",
:class_name => "ActsAsMessageable::Message",
:required => [:topic, :body],
:dependent => :nullify,
}
options = default_options.merge(options)

has_many :received_messages_relation,
:as => :received_messageable,
:class_name => options[:class_name],
:dependent => options[:dependent]
has_many :sent_messages_relation,
:as => :sent_messageable,
:class_name => options[:class_name] || "ActsAsMessageable::Message",
:dependent => options[:dependent] || :nullify
:class_name => options[:class_name],
:dependent => options[:dependent]

self.messages_class_name = (options[:class_name] || "ActsAsMessageable::Message").constantize
self.messages_class_name = options[:class_name].constantize

if self.messages_class_name.respond_to?(:table_name=)
self.messages_class_name.table_name = (options[:table_name] || "messages")
self.messages_class_name.table_name = options[:table_name]
else
self.messages_class_name.set_table_name(options[:table_name] || "messages")
self.messages_class_name.set_table_name(options[:table_name])
ActiveSupport::Deprecation.warn("Calling set_table_name is deprecated. Please use `self.table_name = 'the_name'` instead.")
end

self.messages_class_name.required = Array.wrap(options[:required] || [:topic, :body])
self.messages_class_name.required = Array.wrap(options[:required])
self.messages_class_name.validates_presence_of self.messages_class_name.required

include ActsAsMessageable::Model::InstanceMethods
Expand Down

0 comments on commit ea72581

Please sign in to comment.