web-dev-qa-db-ja.com

モデルに属性を追加するにはどうすればよいですか?

In Rails 2つの文字列でモデルを生成し、さらに追加したいと思います。これを行うにはどうすればよいですか?

36
jsttn

Active Recordはテーブルの列をモデルの属性にマッピングするので、Railsはもっと必要だと言う必要はありません。やらなければならないことは、列を作成してRailsはそれらを検出し、属性は自動的に追加されます。

migrations を使用して、テーブルに列を追加できます。

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

例:

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

これによりファイルが生成されます:

db/2017.....rb

必要に応じて開き、変更を追加します。

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

お役に立てれば。

38
JCorcuera

はい、@ JCorcueraによるソリューションは適用可能ですが、要件を満たすために、もう少し情報をRailsに適用することをお勧めします。このアプローチを試してください。

Rails generate migration add_columnname_to_tablename columnname:datatype

例えば:

Rails generate migration add_password_to_users password:string
48
vishB

さらに簡単にするために、次のことを実行できます。

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

Rails 4.xを使用している場合、次のような参照を使用して移行を生成できます。

Railsは移行を生成しますAddUserRefToProducts user:references

Railsガイド で見ることができるように

2
Paulo Fidalgo