モデルに属性を実際に「追加」することはできません。移行ファイルを作成して実行することで実行できます。Rails は、データベース内の列に基づいて、モデルが持つ属性を判断します。ただし、一括割り当てによって属性を更新できるようにする場合は、モデルに行を追加して属性をホワイトリストに登録する必要があります。そのため、activerecord モデルで次のような行がよく見られます。
attr_accessible :name
ただし、これはオプションであり、属性の追加に必須ではありません。
モデルに新しい属性を実際に追加するには、最初に以下を使用して移行を作成します。
rails g migration AddAddressToPerson address:string
これにより、db/migration/ ディレクトリに移行ファイルが作成されます。(「AddXXXToYYY」および「RemoveXXXFromYYY」という形式は、Rails では「モデル XXX に新しい列を追加 (または削除) する」ことを意味します。詳細については、ドキュメントを参照してください)。この場合address
、文字列であるという名前の属性を追加しましたが、それを好きなように変更できます。
次に、実際にデータベースを更新するには、以下を使用して移行を実行する必要がありますrake
。
rake db:migrate
最後に、その属性の一括割り当てを許可する場合は、引数のリストにその属性を追加しますattr_accessible
。
attr_accessible :name, :address
それはそれを行う必要があります。