На самом деле вы не можете «добавить» атрибут к модели, вы делаете это, создавая файл миграции и запуская его — 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
Это должно сработать.
person
Chris Salzberg
schedule
17.10.2012