Rails: доступ к значению поля из метода модели

только начал изучать Rails (3). Я рву свои волосы, пытаясь найти, как сделать что-то предположительно совершенно тривиальное: получить доступ к значению поля экземпляра модели изнутри метода на этой модели.

в моем случае:

def formal_name
  @title + " " + @forename + " " + @surname
end

все три свойства @(которые являются всеми полями таблицы в базе данных) возвращают nil. Они не должны.

невероятно, как получить доступ к полям не обсуждается в http://guides.rails.info/, и google ничего не находит.

кстати, я еду из Джанго, где это очевидно.

3 ответов


синтаксис @ используется, например, для переменных, которые (например) заполняются в контроллерах, а затем используются в представлениях. Не то, что ты здесь делаешь.

вам на самом деле просто нужно

def formal_name
  title + " " + forename + " " + surname
end

вы должны опустить@, вы получаете к ним доступ с помощью методов getter. В некоторых случаях необходимо использовать self.<field> из-за двусмысленности.


class MyModel << ActiveRecord

  def formal_name
    title = self.title # return title attribute of instance
    forename = self.forename
    surename = self.surname

    # or something like this
    self.title + self.surename
  end

end