일반적인 규칙은 당신이 어떤 속성에 값을 할당하여 자체를 수정하는 때마다,이다는 명시 적으로
self.first_name = 'Prasad' #if self isnt used, it will create a local variable.
'자기'를 사용하고 해당 속성을 참조하는 (그러나 수정되지 않음)하는 경우, 사용하는 '자기를 해달라고 '
def name
name.camelize
end
UPDATE ---- -----
우리가 어떤 속성을 액세스 할 때마다 그 특성에 대한 게터 (리더) 및 설정 부 (작가) 방법이 개발되면, 루비 확인할 것 그렇지 않은가.
위의 경우 (속성에 값을 할당 할 때) 속성에 직접 액세스하지 않고 속성에 값을 내부적으로 할당하는 설정자에게 값을 전달합니다.
2.1.0p0 :008 > User.first.first_name
=> "Prasad"
2.1.0p0 :009 > (User.first.methods - Object.methods).include? :first_name
=> true
2.1.0p0 :010 > (User.first.methods - Object.methods).include? :first_name=
=> true
당신은 어떤 모델
def some_name
first_name = 'Some name'
puts self.first_name
self.first_name = 'Random Username'
puts self.first_name
end
하는 방법을 추가하여 시도하고 콘솔을 다시로드 할 수
2.1.0p0 :017 > User.first.some_name
Prasad
Random Username
=> nil
'self'를 사용하면 같은 이름의 로컬 변수와 잠재적 인 이름 충돌이 발생하는 것을 막을 수 있습니다. –