Ruby에서 인스턴스 속성에 대한 메소드를 어떻게 정의합니까?Ruby에서 속성에 메소드 추가하기
우리는 ActiveRecord :: Base of Rails를 확장하고 content
속성을 가지고있는 HtmlSnippet
이라는 클래스가 있다고 가정 해 봅시다. 그리고, 나는 그것에 대해 replace_url_to_anchor_tag!
메소드를 정의하고 그것을 다음과 같은 방법으로 호출하고 싶습니다.
html_snippet = HtmlSnippet.find(1)
html_snippet.content = "Link to http://stackoverflow.com"
html_snippet.content.replace_url_to_anchor_tag!
# => "Link to <a href='http://stackoverflow.com'>http://stackoverflow.com</a>"
# app/models/html_snippet.rb
class HtmlSnippet < ActiveRecord::Base
# I expected this bit to do what I want but not
class << @content
def replace_url_to_anchor_tag!
matching = self.match(/(https?:\/\/[\S]+)/)
"<a href='#{matching[0]}'/>#{matching[0]}</a>"
end
end
end
은 String 클래스의 인스턴스이므로, String 클래스를 재정의하는 것이 하나의 옵션입니다. 하지만 모든 String 인스턴스의 동작을 덮어 쓰므로 감당할 생각이 없습니다.
class HtmlSnippet < ActiveRecord::Base
class String
def replace_url_to_anchor_tag!
...
end
end
end
제안 사항을 알려주십시오.
싱글 톤이 원하는 것입니다. – oldergod
oops, 나는 항상 코멘트에 의해 당신을 감사하지만 Stackoverflow에서 어떤 작업에 의해. 나는이 시간에 그것을 할 것입니다 – suzukimilanpaak
@oldergod 당신이 샘플을 줄 수 있습니까? – suzukimilanpaak