Когда вы определяете атрибут в ActiveRecord, доступны следующие методы
# gets the value for needs_review
def needs_review
end
# sets the value for needs_review
def needs_review=(value)
end
Вы можете вызвать сеттер, используя
needs_review = "hello"
но это так же, как вы устанавливаете переменную. Когда вы вызываете оператор внутри метода, Ruby отдает более высокий приоритет присваиванию переменных, поэтому будет создана переменная с таким именем.
def one
# variable needs_review created with value foo
needs_review = "foo"
needs_review
end
one
# => returns the value of the variable
def two
needs_review
end
two
# => returns the value of the method needs_review
# because no variable needs_review exists in the context
# of the method
Как правило:
- всегда используйте
self.method_name =
, когда вы хотите вызвать сеттер в методе
- при необходимости используйте
self.method_name
, когда в контексте существует локальная переменная с тем же именем