我有四种型号:用户,产品,所有权和位置。产品属于用户所有权,用户通过所有权拥有许多产品。 当用户创建产品时,我希望如果用户有位置,则产品链接到同一位置。所以这是我的问题:
我们可以改变这个:
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
答案 0 :(得分:1)
如何将product.location
委托给product.owner.location
。
这可以在Product类中完成,如下所示(根据需要更改所有者/用户关系的标识符):
class Product < ActiveRecord::Base
delegate :location, to: :owner
end
如果您致电product.location
,则会返回所有者的位置。