2010-01-30 4 views
6

J'ai un modèle dans mon application Rails qui utilise l'attribut pour :class_namehas_one:Si j'utilise: l'attribut class_name à has_one, que dois-je mettre dans la migration?

class Foo < ActiveRecord:Base 
    has_one :main_bar, :class_name => "Bar" 

    # ... 
end 

Je suis un peu incertain ce qu'il faut mettre dans la migration de cette classe maintenant. Puis-je utiliser des références? Que recherchera Rails en tant que nom de colonne pour :main_bar? Puis-je le faire comme ça?

class CreateFoos < ActiveRecord::Migration 
    def self.up 
    create_table :foos do |t| 
     t.references :main_bar 
    end 
    end 

    def self.down 
    drop_table :foos 
    end 
end 

Merci!

Répondre

7

Vous ne mettez rien dans la table avec la relation "has_one". La clé étrangère va dans l'autre table. Dans l'exemple ci-dessus, vous devez ajouter une clé étrangère à votre table bars.

Dans la migration, vous pouvez utiliser:

t.references :foo 

ou:

t.integer :foo_id 

Soit on va travailler.

Questions connexes