Hello
Suppose there is the following architecture:
class Relation < ActiveRecord::Base belongs_to :owner, :class_name => 'Unit', :foreign_key => :owner_id belongs_to :property, :class_name => 'Unit', :foreign_key => :property_id end
class Unit < ActiveRecord::Base belongs_to :instance, :polymorphic => true
has_many :relations_to, :class_name => 'Relation', :foreign_key => :owner_id has_many :relations_from, :class_name => 'Relation', :foreign_key => :property_id
has_many :properties, :through => :relations_to has_many :owners, :through => :relations_from end
class Task < ActiveRecord::Base has_one :unit, :as => :instance end
class Message < ActiveRecord::Base has_one :unit, :as => :instance end
So the basic idea is that there are units that can have multiply owners and properties among other units, so we have many-to-many association of the units table with itself. As you can see task and message have polymorphic associations with unit, they are units. I wonder if there is an easy way to find all related tasks/messages to some unit (as association proxies), for example find all tasks as properties of the unit, like:
unit.properties.tasks
I want to do things like:
new_property_message = Message.new unit.properties.messages << new_property_message
new_owner_task = Task.new unit.owners.tasks << new_owner_task
unit.owners.messages.find :all, :conditions => { :title => 'hello' }
Thanks