основной вопрос разница между @ в активной записи - PullRequest
0 голосов
/ 06 января 2011

У меня есть основной вопрос, который я пока не могу понять из рубина. Если в активной записи у меня есть "@food", как она отличается от "food". Я признаю, что это массив, но разве активная запись не может быть принята как список данных (массив?)

Спасибо за обмен

Ответы [ 2 ]

5 голосов
/ 06 января 2011

Это не имеет ничего общего с ActiveRecord. Это простой синтаксис Ruby.

@foo обозначает переменную экземпляра. Он ограничен экземпляром своего класса и отличается для каждого экземпляра класса. Содержимое сохраняется до тех пор, пока сохраняется экземпляр класса.

foo может обозначать локальную переменную, которая действительна только в текущей области видимости блока. Он выходит из области видимости, как только блок выходит, и содержимое отбрасывается, если на него нет ссылок в другом месте.

И нотация @ не имеет ничего общего с массивами или любыми другими типами данных. В Ruby переменные не имеют типов данных. @bar без проблем примет строку, целое число или массив. И так будет bar.

2 голосов
/ 06 января 2011

A @var означает переменную с областью действия в экземпляре модели.

http://www.techotopia.com/index.php/Ruby_Variable_Scope#Ruby_Instance_Variables

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...