2011-01-24 2 views

ответ

2

@patient - это переменная экземпляра класса, в которой это вызвано. Скорее всего, это происходит в вашем контроллере, тогда это переменная экземпляра вашего контроллера, называемая пациентом. @ -char указывает только часть переменной экземпляра.

Пациент. Rails следует за ORM (объектно-реляционное сопоставление), что означает, что для каждой таблицы базы данных есть соответствующий класс. Эти классы, которые обертывают таблицы базы данных, предоставляют метод, который выполняет операции на уровне таблицы базы данных. Пациент здесь - это просто название класса.

найти - метод класса, предоставляемый классом пациента.

(17) - параметр, заданный методу поиска. Rails будет искать таблицу пациентов и пытается найти запись с id = 17.

+0

В чем разница между переменной экземпляра и нормальной? – pedrozath

+0

@pedrozath: http://stackoverflow.com/questions/3757481/rails-local-variables-versus-instance-variables – hade

3

Просто скажите: это найдет patient data для id=17 и установите его в @patient.

Надеюсь, вы это понимаете.

+0

В какой таблице базы данных? – pedrozath

+0

Таблица будет пациентами –

+0

В таблице «Пациенты» (если вы не указали ее иначе). ActiveRecord берет на себя обязательство привязывать объекты Rails к их соответствующей таблице базы данных, используя соглашения в именовании. –

2

Вышеприведенный код извлекает запись из таблицы («пациенты по соглашению с рельсами») и присваивает ее переменной экземпляра @patient.

находка представляет собой метод, который доступен для модели Пациента по наследству от ActiveRecord :: Base

Модель пациента непосредственно отображает на таблицу в базе данных, которые вы настроили в вашем database.yml Параметр 17 сопоставляется с возвратом первичного ключа таблицы и соответствующей записи. Поскольку он совпадает с первичным ключом, возвращается только одна запись.

Если запись не найдена для значения = 17, то генерируется исключение ActiveRecord :: RecordNotFound.

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