В чем разница между именем_экземпляра [: имя_ столбца] и именем_экземпляра.column_name? - PullRequest
0 голосов
/ 05 декабря 2010

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

[ ] должен быть оператором для массива, верно?Почему я могу использовать его следующим образом:

код 1:

drummer = Drummer.find(1)
drummer[:name]
=>"Jojo Mayer"

код 2:

drummer = Drummer.find(1)
drummer.name
=> "Jojo Mayer"

Ответы [ 2 ]

3 голосов
/ 05 декабря 2010

Разницы нет.ActiveRecord: метод базового экземпляра [] просто вызывает read_attribute, который возвращает то же значение.

Цель метода [] - разрешить передачу имени атрибута с переменной, например:

key = :name
drummer[key]
   =>"Jojo Mayer"
1 голос
/ 06 декабря 2010

На самом деле есть важное отличие.

Если вам нужно выполнить некоторую обработку значения, переопределив сеттер:

class Drummer
  def name= value
    self[:name] = value.capitalize
  end
end

Тогда барабанщик [: name] позволяет обойти переопределение.

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