Полиморфная связь — что хранится в атрибуте типа?

#ruby-on-rails-4 #polymorphism #has-many #polymorphic-associations #belongs-to

#ruby-on-rails-4 #полиморфизм #имеет-много #полиморфные-ассоциации #принадлежит-to

Вопрос:

Допустим, у вас есть полиморфная связь, подобная этой:

 class Picture < ActiveRecord::Base
  belongs_to :imageable, polymorphic: true
end

class Employee < ActiveRecord::Base
  has_many :pretty_pictures, as: :imageable
end

class ProductInvoice < ActiveRecord::Base
  has_many :pretty_pictures, as: :imageable
end
  

И это ваша миграция для модели Picture:

 class CreatePictures < ActiveRecord::Migration
  def change
    create_table :pictures do |t|
      t.string :name
      t.references :imageable, polymorphic: true
      t.timestamps
    end
  end
end
  

Допустим, у вас есть @product_invoice с идентификатором : равным 1, и у вас есть @picture, который принадлежит этому продукту. Я знаю, что @picture.imagable_id должен быть равен 1, но каким будет значение, хранящееся в @picture.imagable_type?

  • ‘ProductInvoice’
  • ‘ProductInvoices’
  • ‘product_invoice’
  • ‘product_invoices’

Ответ №1:

через G.B в комментариях

‘ProductInvoice’