可查看的属性如何工作?

时间:2014-01-26 15:40:34

标签: ruby-on-rails ruby-on-rails-3

你能告诉我这种“可见”是如何起作用的,它是什么?我不明白...... 在产品模型中,我们与相同的: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

1 个答案:

答案 0 :(得分:2)

这是一种经典的多态关系。详细信息位于Rails指南的Active Record Association Basics页面上,但简单的术语表示Assets表将存储多种不同类型的类似资产的对象。

产品型号声明了两种类型的资产。一个图像和许多内容对象。 Assets表将用于存储这两种类型的详细信息,即您将没有单独的Images表和Contents表。

Assets中的viewable_id将是Product的id的外键。 viewable_type将指示Asset是Image还是Content对象。