你能告诉我这种“可见”是如何起作用的,它是什么?我不明白......
在产品模型中,我们与相同的:as => :viewable
参数具有两个关系。我发现viewable
只有一个地方 - viewable_id
表格中有一个assets
。
class Product < ActiveRecord::Base
has_one :image, :as => :viewable
has_many :contents, :as => :viewable
end
class Asset < ActiveRecord::Base
belongs_to :viewable, :polymorphic => true
end
class CreateAssets < ActiveRecord::Migration
def change
create_table :assets do |t|
t.string :viewable_type
t.integer :viewable_id
end
end
答案 0 :(得分:2)
这是一种经典的多态关系。详细信息位于Rails指南的Active Record Association Basics页面上,但简单的术语表示Assets表将存储多种不同类型的类似资产的对象。
产品型号声明了两种类型的资产。一个图像和许多内容对象。 Assets表将用于存储这两种类型的详细信息,即您将没有单独的Images表和Contents表。
Assets中的viewable_id将是Product的id的外键。 viewable_type将指示Asset是Image还是Content对象。