1

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

我们可以改变这个:

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
4

1 回答 1

1

委托product.locationproduct.owner.location.

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

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

如果您调用product.location,将返回所有者的位置。

于 2013-09-24T13:50:11.437 回答