Почему нет? t self всегда нужен в ruby ​​/ rails / activerecord?

При тестировании пары геттер / сеттер в модели рельсов я нашел хороший пример поведения, которое я всегда считал странным и непоследовательным. .

В этом примере я имею дело с классом Folder .

Folder belongs_to: parent,: class_name => 'Folder'

В методе получения, если Я использую:

def parent_name
  parent.name
end

... или ...

def parent_name
  self.parent.name
end

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

def parent_name=(name)
  parent = self.class.find_by_name(name)
end

... parent становится равным нулю, но если я использую ...

def parent_name=(name)
  self.parent = self.class.find_by_name(name)
end

... тогда он работает.

Итак, мой вопрос: почему вам иногда нужно объявлять self.method и почему вы можете просто использовать локальную переменную?

Кажется, необходимость / использование self в ActiveRecord несовместима, и я хотел бы понять так лучше, поэтому я не чувствую, что всегда гадаю, нужно ли мне объявлять себя или нет. Когда вы должны / не должны использовать self в моделях ActiveRecord?

46
задан Andrew 3 March 2011 в 16:39
поделиться