2013-03-08 5 views
0

на направляющих рельсах, я увидел класс был определен какпустое поле класса в RoR

class Person < ActiveRecord::Base 
end 

, а затем он написал

>>p = Person.new(:name => "John Doe") 
=>#<Person id: nil, name: "John Doe", created_at: nil, :updated_at: nil 

Поскольку класс Person не имеет поля, поэтому здесь она действительна передать атрибут name в конструктор? Должна ли быть какая-то ошибка?

Кроме того, почему id, name, created_at у всех нет двоеточия, но: updated_at имеет один?

ответ

0

Поскольку ваш класс наследует от ActiveRecord::Base, а ActiveRecords просматривает вашу базу данных и динамически создает атрибуты, соответствующие столбцам в соответствующей таблице базы данных.

updated_at также не имеет колонки. Пожалуйста, смотрите внимательно. Это должна быть ошибка.

+0

Почему нам здесь не нужны атрибуты? – OneZero

+0

У него есть онлайн-гид, но, возможно, это опечатка. – OneZero

+0

Да, это должна быть опечатка. Итак, код здесь не на самом деле * ваш * код? Вы скопировали его из Rails Guides? – Mischa

0

Чтобы увидеть поля, определенные в классе ActiveRecord, вам необходимо посмотреть файл db/schema.rb. Это покажет вам поля, созданные с помощью миграции.

Смежные вопросы