여기서 내가 뭘 잘못하고 있니?Rails 모델 사용자 정의 setter/getter 메소드가 실패하는 이유는 무엇입니까?
나는 페이지라고 부르는 앱을위한 모델을 가지고있다. 제목 pagetype에
제목과 pagetype에이 같은 일반적으로 설정할 수 있습니다 PAGE_URL,하지만 난 PAGE_URL에 대한 사용자 정의 게터/세터를 사용 : 그 속성이 있습니다. 여기에 논리/모델 :
class Page < ActiveRecord::Base
def page_url=()
temp = self[:title]
pageUrl = temp.gsub(" ", "_").downcase
if self[:pagetype] == "home"
pageUrl = "/"
end
self[:page_url] = pageUrl
end
def page_url
self[:page_url]
end
end
그것은 매우 간단합니다 -> PAGE_URL는 않는 PAGE_TYPE로 대체 모든 공백 제목을 기반으로는 == 다음으로 설정됩니다 "홈", "/"로. 레코드를 위해서 나는 그것을 검색 가능해야하고 db에 저장해야하기 때문에 page_url을 가상으로 만들고 싶지 않습니다.
그래서 불행히도 레일즈 콘솔이나 내 응용 프로그램에서이 작업이 실패합니다. 다음은 콘솔에서 setter 메서드를 호출하는 방법입니다. 나는이가 계속하지만
page1 = Page.new
page1.pagetype = "home"
page1.title = "this is a test"
page2 = Page.new
pager2.pagetype = "content"
page2.title = "this is another test"
#expected results should be
page1.page_url()
=> "/"
page2.page_url()
:
page1.page_url()
=> nil
는 도대체 내가 잘못 여기서 뭐하는 거지?
정말 고마워요. 정말 감사. – jmtoporek
당신을 진심으로 환영합니다. 기쁜 데 도움이되었습니다. – Mischa