Почему переменные экземпляра в rails не имеют символа @? - PullRequest
0 голосов
/ 09 марта 2012

Я просто изучаю рельсы и заметил, что когда я создаю объект, который наследуется от ActiveRecord :: Base (то есть от модели, которую я перенес), переменные экземпляра в объекте не имеют символа @ перед ними .

Это рельсы, или я что-то не так понял, изучая рубин?

Заранее спасибо за помощь.

Ответы [ 4 ]

1 голос
/ 09 марта 2012

Rails не использует отдельные переменные экземпляра для хранения полевых данных. Вместо этого он делает доступными определенные методы, которые устанавливают правильные переменные. Это помогает Rails лучше заполнять модели при использовании находок и позволяет использовать другие методы, улучшающие динамический Rails.

0 голосов
/ 09 марта 2012

При доступе к «переменным экземпляра» вашего объекта вы фактически взаимодействуете с методами getter / setter, определенными rails, которые, в свою очередь, взаимодействуют с реальными переменными экземпляра.

Это на самом деле очень полезно, так как позволяет вам переопределять их, когда требуется изменить поведение переменных в ваших классах.

0 голосов
/ 09 марта 2012

Rails определяет получатель / установщик для всех атрибутов модели.

Получатель / установщик может быть объявлен с функцией attr_accessor.

class Foo
  attr_accessor :bar

  def do_something
     self.bar=2
     @bar=2 # does the same as above
  end
end
0 голосов
/ 09 марта 2012

Столбцы вашей модели не являются переменными экземпляра stricto sensu.

У вас есть доступ к их получателю / установщику, но они по своей природе различны: они должны сохраняться.

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