是否有可能反转多态关联?

时间:2013-09-24 08:54:27

标签: ruby-on-rails polymorphic-associations

我有四种型号:用户,产品,所有权和位置。产品属于用户所有权,用户通过所有权拥有许多产品。 当用户创建产品时,我希望如果用户有位置,则产品链接到同一位置。所以这是我的问题:

我们可以改变这个:

class Location < ActiveRecord::Base
  belongs_to :localizable, polymorphic: true
end

class User < ActiveRecord::Base
  has_one :location, as: :localizable
end

class Product < ActiveRecord::Base
  has_one :location, as: :localizable
end

进入这个:

class Location < ActiveRecord::Base
  has_many :localizables, polymorphic: true
end

class User < ActiveRecord::Base
  belongs_to :location, as: :localizable
end

class Product < ActiveRecord::Base
  belongs_to :location, as: :localizable
end

1 个答案:

答案 0 :(得分:1)

如何将product.location委托给product.owner.location

这可以在Product类中完成,如下所示(根据需要更改所有者/用户关系的标识符):

class Product < ActiveRecord::Base
  delegate :location, to: :owner
end

如果您致电product.location,则会返回所有者的位置。