2014-04-22 2 views
1

이것은 매우 간단한 질문이지만 여기에서 무슨 일이 일어나는지 알 수 없습니다.Ruby 클래스 인스턴스 필드가 숨김

class User 
    attr_accessor :first_name, :last_name 

end 

내가 새로운 Userfirst_namelast_name 필드를 쓸 수 있고, 내가 그것을에 할당 된 변수를 통해 해당 사용자를 호출 할 때,이 얻을 : 여기 내 간단한 모델의

> u 
=> #<User> 

을 내가 쓴 필드는 보여주지 않습니다. 나는 (지난 & 이름에 대한)이 작업을 수행 할 때 : 나는 u를 호출 할 때

> u.first_name 
=> "John" 

이유는 전체 개체가 나타나지 않습니다? 예 : => #<User first_name: 'John' last_name: 'Smith'>. 출력물을 얻으려면 모델에 무엇을 추가해야합니까? 미리 감사드립니다.

답변

0

개체를 String으로 변환하는 데 사용되는 방법은 to_s이고 사람이 읽을 수있는 디버깅 출력에 사용되는 방법은 inspect입니다. 일부 환경에서는 다른 방법도 사용합니다. pry (또는 일부 플러그인)은 사람이 읽을 수있는 "꽤"디버깅 출력을 위해 pretty_inspect을 사용합니다. 이러한 메소드를 구현해야합니다.

예 : 루비 당신이

class User 
    def inspect 
    "#<#{self.class} first_name: '#{first_name}', last_name: '#{last_name}'>" 
    end 
end 
0

를 사용하는거야? 나를 위해 그것은 작동한다 :

class Testtt 
    attr_accessor :a 
end 

test = Testtt.new 
test.a = 1 

> test 
=> #<Testtt:0x007fdbca785b60 @a=1> 
+0

MRI 2.1 나도 몰라. 정말 이상하게 보입니다. – user3181113

관련 문제