Ruby 클래스의 이름은 어떻게 얻습니까?
ActiveRecord 객체에서 클래스 이름을 얻으려면 어떻게해야합니까?
나는 가지고있다:
result = User.find(1)
나는 시도했다 :
result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"
문자열 ( User
이 경우) 에는 클래스 이름 만 필요합니다 . 그 방법이 있습니까?
나는 이것이 매우 기본적이라는 것을 알고 있지만 Rails와 Ruby의 문서를 모두 검색했지만 찾을 수 없었습니다.
객체의 클래스에서 .name 을 호출하려고합니다 .
result.class.name
Daniel Rikowski와 pseidemann의 의견에서 발췌 한 정답입니다. 정답을 찾기 위해 의견을 정리해야하는 데 지쳤습니다 ...
Rails (ActiveSupport)를 사용하는 경우 :
result.class.name.demodulize
POR (plain-ol-Ruby)을 사용하는 경우 :
result.class.name.split('::').last
모두 result.class.to_s
와 result.class.name
작동합니다.
당신은 클래스 메소드 내부에서 클래스 이름을 얻고 싶은 경우에, class.name
또는 self.class.name
작동하지 않습니다. 이것들은 단지 Class
클래스의 클래스가 있기 때문에 출력됩니다 Class
. 대신 다음을 사용할 수 있습니다 name
.
module Foo
class Bar
def self.say_name
puts "I'm a #{name}!"
end
end
end
Foo::Bar.say_name
산출:
I'm a Foo::Bar!
필자의 경우와 같은 result.class.name
것을 사용할 때와 같은 것을 얻었습니다 Module1::class_name
. 그러나 우리는 원하는 경우 class_name
, 사용을
result.class.table_name.singularize
참고 URL : https://stackoverflow.com/questions/826210/how-do-i-get-the-name-of-a-ruby-class
'Programming' 카테고리의 다른 글
AngularJS UI 라우터 로그인 인증 (0) | 2020.02.26 |
---|---|
Git 브랜치의 가장 가까운 부모를 찾는 방법은 무엇입니까? (0) | 2020.02.26 |
Internet Explorer에서 'console'은 정의되지 않은 오류입니다. (0) | 2020.02.26 |
Linq에서 SQL Like %를 수행하는 방법은 무엇입니까? (0) | 2020.02.26 |
Java에서 상수를 구현하는 가장 좋은 방법은 무엇입니까? (0) | 2020.02.26 |