으로 전화하십시오. 새 모델을 만들면 기존 클래스의 메서드를 상속 할 수 있습니다.
예 (APP/모델/mykindofstring.rb) 상기 제어기에서 차례로
class Mykindofstring < String
def all_caps_and_reverse
self.upcase.reverse
end
end
:
<%= @my_string %>
표시 : 뷰에서 호출
@my_string = Mykindofstring.new('This is my string')
최종적 as This is my string, while :
은 GNIRTS YM SI SIHT로 표시됩니다.
클래스는 문자열 클래스에서 상속되므로 문자열에 적용되는 모든 메서드도 mykindofstring 객체에 적용됩니다. 이 메서드는 두 개의 기존 문자열 메서드를 조합 한 새로운 이름이지만 시간을 형식화 된 문자열로 변환하는 메서드와 같이 원하는대로 만들 수 있습니다.
기본적으로 함수/도우미를 사용하는 대신 사용자 고유의 메서드로 현재 Ruby 클래스를 확장하고 있습니다.
주요 편집 IANS의이 답변에 대한 의견과 위의 질문에 대한 자신의 답변에 따라
, 나는 레일에 약간의 주위에 연주하고 application_helper.rb이 추가 내놓았다 :
지금 바로 응용 프로그램에서 모든 문자열에 메소드를 호출
module ApplicationHelper
String.class_eval do
def all_caps_and_reverse
self.upcase.reverse
end
end
end
:
@string = 'This is a string.'
@string.all_caps_and_reverse
이시의 sihT을 .gnirts
왜 이것이 중요한가요? 아마도 일부 컨텍스트가 도움이 될 것입니다 ... – runako
난 그냥 기존의 구문 성가신하고 못생긴 찾으십시오. 내 모델에서 @ post.truncate와 같은 것을 호출하는 것도 좋습니다 (예 : 캐싱) –