Eu tenho uma tabela de produtos e quero adicionar uma coluna:
t.references :imageable, :polymorphic => true
Eu estava tentando gerar migração para isso fazendo:
$ rails generate migration AddImageableToProducts imageable:references:polymorphic
mas obviamente estou fazendo errado. Alguém pode fazer alguma sugestão? obrigado
Quando tento inseri-lo manualmente após gerar a migração, fiz o seguinte:
class AddImageableToProducts < ActiveRecord::Migration
def self.up
add_column :products, :imageable, :references, :polymorphic => true
end
def self.down
remove_column :products, :imageable
end
end
e ainda não funcionou
ruby-on-rails
polymorphic-associations
rails-migrations
railslearner
fonte
fonte
Respostas:
Até onde eu sei, não há gerador embutido para associações polimórficas. Gere uma migração em branco e modifique-a manualmente, de acordo com suas necessidades.
Atualização : você precisará especificar qual tabela está alterando. De acordo com esta resposta SO :
fonte
schema.rb
deve ser atualizada, mas não diz nada sobrepolymorphic
. Em vez disso, você deve ver os campos reais que o Rails usa (os Guias do Rails têm mais informações).references
coluna? Preciso indexar isso?imageable_type
e / ouimageable_id
conforme necessário.imageable_id
eimageable_type
funcionou. Obrigado pela ajuda.O que você está tentando fazer ainda não está implementado na versão estável dos trilhos, portanto a resposta de Michelle é a certa por enquanto. Mas esse recurso será implementado nos trilhos 4 e já está disponível na versão edge da seguinte forma (de acordo com este CHANGELOG ):
fonte
add_reference :products, :imageable, polymorphic: true, index: true
{polymorphic}
precisa ser escapado com a casca do peixe, por exemplo\{polymorphic\}
Você também pode fazer o seguinte:
fonte
Podes tentar
rails generate migration AddImageableToProducts imageable:references{polymorphic}
fonte
{
e}
necessidade de ser escapado com a shell peixe pelo menos, por exemplo\{polymorphic\}