2013-04-17 2 views
0

사용자가 정수의 데이터 유형이있는 bytesize 속성에 대한 숫자를 입력하는 양식이 있습니다. 숫자는 내 개체 @catcher의 바이트 양을 나타냅니다.속성의 값을 새 값으로 변환하는 메소드를 만드는 방법

바이트 수를 메가 바이트로 변환하는 메서드가 필요합니다. 즉, @ catcher.mbsize를 실행하고 싶습니다. 그러면 해당 개체의 메가 ​​바이트 수가 표시됩니다.

저는 Rails에 익숙하지 않습니다. 그렇다면 사과해야 할 것 같습니다.

답변

2

변환 방법은 꽤 솔직하다 :

class Catcher 
    def mbsize 
    self.bytesize/(1 << 20) 
    end 
end 

그렇게 attr_accessor :bytesize@bytesize에 저장되고, 속성은 내부적으로 인스턴스 변수로 저장된다는 것을 기억하십시오.

+0

나는 그것을했고, 제 콘솔에서 완벽하게 작동했습니다. 그러나 다른 속성과 함께 "표시"페이지에 해당 수량을 표시하려고합니다. 그래서 저는 그것을 페이지의 부분에서 보간법으로 사용했습니다 - 즉, # {@ catcher.mbsize}. 그러나, "undefined method'/ 'for nil : NilClass"라는 오류 메시지가 나왔습니다. 그러나이 속성을 기반으로하는 다른 모든 보간법 (예 :'# {@ catcher.bytesize} ')은이 부분에서 완벽하게 작동합니다. 이견있는 사람? – CodeBiker

+0

그 특별한 경우에'@ catcher'는'bytesize'가 정의되어 있습니까? – tadman

+0

죄송합니다. 끝나기 전에 우연히 엔터를 눌렀습니다. 그래서 돌아가서 편집했습니다. 예, 정의되어 있습니다. – CodeBiker

0

DB에 mbsize 열을 추가해야합니다. 컨트롤러에서

:

def create 
#other code 
def mbsize 
    @bytesize/(1 << 20) 
    end 
@catcher.mbsize=mbsize 
@cather.save 
end 

편집 :

당신은 관련 DB의 기록이 필요합니다, 당신은 단순히 포수 모델에서이 방법을 정의 할 수없는 경우 :

def mbsize 
bytesize=self.bytesize 
mbsize=#your method of converting 
end 

작성자 당신의 바이트가 찌르는 이유가 있습니다. .to_i 방법으로 정수로 변환 할 수 있습니다.

+0

왜 중복 열을 추가하겠습니까? – tadman

+0

더 이상 "nilClass"라고 표시되지 않으므로 더 잘 작동합니다. 이제 오류 메시지는 "12345678": String'에 대해'정의되지 않은 메소드'/ '를 읽습니다. 다시 말하지만, 저는 이것을 부분적인 것에 넣었습니다. 그리고 그 부분과 관련이 있는지 궁금합니다. 부분은 다음과 같이 설정됩니다. '<% = "여기에 일부 코드 ... #{@catcher.mbsize} 및 이와 유사한 코드가 있습니다. # {@catcher.name} 여기"%>' 그것? 나는 그것을 문자열로 읽는 것이 주목할만한 일이라고 생각한다. 다시 말하지만, mbsize 메소드를 제외하고는 다른 모든 것이 작동합니다. – CodeBiker

+0

왜 이런 일을하는 것이 불투명 해지면 이전처럼 뭔가 새로운 것을 엉망으로 만든 것일 수도 있습니다. 새로운 것을 배울 때까지 혼자서 혼란스럽게 할 수 있습니다. 여러분 모두의 도움에 감사드립니다. – CodeBiker

관련 문제