t.belongs_to dans la migration
J'ai été à l'aide de Ryan Bates le code source pour railscasts #141, afin de créer un simple panier. Dans l'un des migrations, il énumère
class CreateProducts < ActiveRecord::Migration
def self.up
create_table :products do |t|
t.belongs_to :category
t.string :name
t.decimal :price
t.text :description
t.timestamps
end
end
def self.down
drop_table :products
end
end
Ici est le modèle de Produit:
class Product < ActiveRecord::Base
belongs_to :category
end
Quel est le t.belongs_to :category
ligne? C'est qu'un alias pour t.integer category_id
?
Vous devez vous connecter pour publier un commentaire.
La
t.belongs_to :category
est juste un spécial de la méthode d'assistance de rails de passage dans l'association.Si vous regardez dans le le code source
belongs_to
est en fait un alias dereferences
cela génère:
http://guides.rubyonrails.org/active_record_migrations.html#creating-a-standalone-migration
Oui, c'est un alias, Il peut aussi être écrit
t.references category
.t.references
ajoute désormais une contrainte de clé étrangère. apidock.com/rails/ActiveRecord/ConnectionAdapters/Table/...add_belongs_to(table_name, *agrs)
est ce que vous cherchez. Vous pouvez lire à ce sujet iciOui,
t.belongs_to :category
agit comme un alias pourt.integer category_id
, en ce qu'il cause bien tapécategory_id
champ doit être créé.Dans MySQL, la migration ai un tableau comme ceci (notez le
category_id
champ sur la deuxième ligne):