2010-06-24 3 views
8

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

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

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

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

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

BTW, я прихожу из Django, где этот материал очевиден.

ответ

10

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

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

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

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

0
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 
+1

Почему 'self.fieldname' здесь и просто' fieldname' в другой ответ? «Я» просто позволяет вам быть более конкретным в области? например если вы должны объявить локальную переменную в методе с тем же именем, что и поле? –

Смежные вопросы