Scott Johnson wrote:
> On Oct 23, 11:11 am, Marnen Laibow-Koser <rails-mailing-l...@andreas-
> s.net> wrote:
>> Define it as an ActiveRecord::Base class method.
>
> Sure, but where? In lib/* somewhere? I'll need it to get loaded before
> any of these models get loaded. (Or I would have to add a 'require' to
> each commentable model.)
You have a number of choices:
1.
/lib/commentable.rb
module Commentable
def self.included(base)
base.has_many :subscriptions, :as => :subscribable
# and so on
end
end
/app/models/blog_post.rb
class BlogPost < AR::B
include Commentable
# rest of class definition
end
2.
/lib/commentable.rb
# as in 1, but after the end of the module (or in environment.rb):
class ActiveRecord::Base
def self.acts_as_commentable
include Commentable
end
end
/app/models/blog_post.rb
class BlogPost < AR::B
acts_as_commentable
end
3 (probably not recommended).
/config/environment.rb
class ActiveRecord::Base
def self.acts_as_commentable
has_many :subscriptions, ;as => :subscribable
# and the other has_manys
end
end
4. Write an acts_as plugin (but call it something else -- I think
acts_as_commentable is already taken as a plugin name).
Does that help?
Best,
--
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---