Rails: доступ к значению поля из метода модели - PullRequest
8 голосов
/ 24 июня 2010

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

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

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

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

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

Кстати, я приехал из Джанго, где это очевидно.

Ответы [ 3 ]

10 голосов
/ 24 июня 2010

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

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

def formal_name
  title + " " + forename + " " + surname
end
0 голосов
/ 24 июня 2010
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
0 голосов
/ 24 июня 2010

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

...