web-dev-qa-db-fra.com

Comment ajouter un attribut à un modèle?

Dans Rails je génère un modèle avec deux chaînes et j'aimerais en ajouter plus. Comment dois-je procéder?

36
jsttn

Active Record mappe vos colonnes de tables aux attributs de votre modèle, vous n'avez donc pas besoin de dire Rails que vous en avez besoin de plus, ce que vous avez à faire est de créer plus de colonnes et Rails va les détecter, les attributs seront ajoutés automatiquement.

Vous pouvez ajouter plus de colonnes à votre table via migrations :

Rails generate migration AddNewColumnToMyTable column_name:column_type(string by default)

Exemple:

Rails generate migration AddDataToPosts views:integer clicks:integer last_reviewed_at:datetime 

cela va générer un fichier:

db/2017.....rb

Ouvrez-le et ajoutez-le si nécessaire:

self.up
  #add_column :tablename, :column_name, :column_type
  add_column :posts, views, :integer
  add_column :posts, clicks, :integer, default: 0
end

J'espère que cela t'aides.

38
JCorcuera

Oui, la solution de @JCorcuera est applicable, mais je suggère d'appliquer un peu plus d'informations à Rails pour répondre à nos besoins. Essayez cette approche:

Rails generate migration add_columnname_to_tablename columnname:datatype

Par exemple:

Rails generate migration add_password_to_users password:string
48
vishB

Pour le rendre encore plus simple, vous pouvez faire:

Rails g migration add_something_to_model something:string something_else:integer
2
Garrett O'Grady

Si vous utilisez le Rails 4.x, vous pouvez maintenant générer des migrations avec des références, comme ceci:

Rails génèrent une migration Utilisateur AddUserRefToProducts: références

comme vous pouvez le voir sur Rails guides

2
Paulo Fidalgo