Polymorphic associations and STI

If a Problem with a polymorphic association and STI.

class Message < ActiveRecord::Base
belongs_to :source, :polymorphic => true
end

class Letter < Message
end

class Post < ActiveRecord::Base
has_many :messages, :as => :source
end

Post.first.messages works fine
Post.first.letters

Throws “NoMethodError: undefined method `letters’ for
#Post:0xb6671ef0

Thanks for your help.

lg
xinu

Hello

If I’m not completely wrong what you want is just STI:

class Message < ActiveRecord::Base
belongs_to :post
end

class Letter < Message
end

class Post < ActiveRecord::Base
has_many :messages
has_many :letters
end

For each inherited model of Message that you access by
Post.inherited_modelname(s) (like in Post.first.letters) you need a
has_many declaration in the Post class.

Regards, T.

For each inherited model of Message that you access by
Post.inherited_modelname(s) (like in Post.first.letters) you need a
has_many declaration in the Post class.

Thanks. I thought has_many creates automatically the relation to the
subclasses.

On Jan 16, 11:21Â am, “Michael M.” [email protected] wrote:

For each inherited model of Message that you access by
Post.inherited_modelname(s) (like in Post.first.letters) you need a
has_many declaration in the Post class.

Thanks. I thought has_many creates automatically the relation to the
subclasses.

Nope. But note that if you have a post that’s associated to both
Letters and Messages, you’ll still get both out of the @post.messages
association.

–Matt J.