Right, so the answer is that uni-directional belongs_to associations
*can''t* be polymorphic. The polymorphicness of a belongs_to
association is on the belonging-to side, not the belonged-side. That
is, my Person doesn''t inherit from some "Locatable."
This solves it:
class Person < ActiveRecord::Base
belongs_to :location, :class_name => ''Location::Base''
end
(I actually do abstract Locatable into a mixin module, but it''s not an
STI inheritance thing, so there''s no AR polymorphism.)
-Gaius
On Jun 11, 8:18 pm, gcnovus
<james.a.ro...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> The setup:
> class Location::Base < ActiveRecord::Base
> set_table_name :locations
> ...
> end
> class Location::Address < Location::Base
> ...
> end
> class Location::Airport < Location::Base
> ...
> end
> class Person < ActiveRecord::Base
> belongs_to :location, :polymorphic => true, :class_name =>
> "Location::Base"
> ...
> end
>
> I want a unidirectional belongs_to relationship. That is, Locations
> are never going to need to figure out who''s at them. Or, more
> specifically, the headache involved with the many-to-many and the
> caching and everything isn''t worth the cost. I just want to be
able
> to store a location for a Person (and for various other models that
> are unrelated to Person).
>
> Some questions:
>
> Why does Person need both a location_id and a location_type? In order
> to instantiate the location, it needs to look up the whole row in the
> locations table, which includes a "type" column (as required by
single
> table inheritance).
>
> Why won''t the new sexy fixtures work on this (regardless of
whether
> Person has a location_type column)? They seem to work only if
> Location::Base has_one :person.
>
> -Gaius
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---