Есть ли способ напрямую ссылаться (используя рельсы напрямую, не прибегая к большому количеству пользовательских SQL) отношение, которое вложено за полиморфное отношение? В приведенном ниже примере существует ли способ определить отношение has_many в User, которое ссылается на LayerTwo?has_many: сквозные, вложенные полиморфные отношения
Я хотел бы сделать (в пользователе)
has_many :layer_twos, :through => layer_ones
, но этот подход не принимает в счет ранее указанное has_many отношений через полиморфное отношение. Какие-либо предложения? Возможно, это не возможно с помощью существующих соглашений о рельсах, но решил, что я отложил бы вопрос к людям умнее тогда.
class CreateOwners < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.timestamps
end
create_table :owners do |t|
t.timestamps
t.references :owned, :polymorphic => :true
t.references :user
end
create_table :layer_ones do |t|
end
create_table :layer_twos do |t|
t.references :layer_one
end
end
end
class Owner < ActiveRecord::Base
belongs_to :user
belongs_to :owned, :polymorphic => true
end
class User < ActiveRecord::Base
has_many :owners
has_many :layer_ones, :through => :owners, :source => :owned, :source_type => 'LayerOne'
end
class LayerOne < ActiveRecord::Base
has_many :owners, :as => :owned
has_many :layer_twos
end
class LayerTwo < ActiveRecord::Base
belongs_to :LayerOne
end
Спасибо просто хотел быть убедиться в том, что с кем-то остальное. –