2016-07-25 2 views
0

내 응용 프로그램에 게시물을 재 게시에 사용할 수 있도록 노력하고 ... 난 유튜브 동영상이 코드에서 볼 레일에 루비에,이 경우처럼 자기를 추가하는 것입니다는 .. 그것이 올바른

class Pin < ActiveRecord::Base 
validates_presence_of :bio 
belongs_to :user 

mount_uploader :image, PictureUploader 

def repost 
    repost_pin = self.dup 
    repost_pin.save 
end 

여기에 자기를 사용하는 것이 맞습니까? 그리고 이것에 변화시킬 수있을 것이다 : 최종의 재 게시

def repost 
    dub 
end 

은 (@post = Post.find (PARAMS [: ID])) 인스턴스 변수 @post 호출한다 .... 어쩌면 나는 여기서 뭔가를 오해한다. .. 누군가는 도울 수 있냐?

+0

두 번째'repost' 메소드로 변경할 수 있는지 물어 보면, 그것을 변경하고 응용 프로그램을 실행 해 보시기 바랍니다. 오류가 있으면 게시 하시겠습니까? – aBadAssCowboy

+0

내가 알고 싶어하는 중요한 것은 여기에 사용 된 방법과 같이 자기를 사용하는 것이 옳다면 ... 루비의 올바른 방법인가 아니면 무엇입니까 ... – sam0101

답변

1

컨텍스트에서 현재 인스턴스의 속성을 읽거나 해당 메서드를 호출하는 것이 명확하지 않은 경우 self을 건너 뛸 수 있습니다.

이 같은 더 조심해야한다 작성할 때 : 같은 이름의 속성이 존재하는 경우에도

def write 
    test = 'test' 
end 

는 지역 변수 test을 생성합니다. 또는이 :

def write 
    self.test = 'test' 
end 

test라는 이름의 현재 인스턴스의 속성에 값을 할당합니다. 당신의 예에서

당신이 dup 이후 self을 건너 뛸 수는 Object하는 방법이므로 유효한 식별자로 현재 컨텍스트에서 사용할 수 있습니다 : 말했다

def repost 
    repost_pin = dup 
    repost_pin.save 
end 

, 명시 적으로 self 등을 사용할 수있는 오류가 아닙니다 객체의 속성 또는 메소드를 사용할 의도를 표시합니다. Ruby style guide은 권장하지 않습니다.

+0

큰 설명 ... 도움을 주셔서 감사합니다;) 그냥 명확하게 ... @ post에서 repost를 호출하면 ... 그렇게 될 것입니다 : repost_pin = @ post.dup ?? 나 맞아? – sam0101

+0

내가 투표 할 때 투표 할 때 투표 수가 적어서 15 회 반복하지 않는다는 메시지가 나타납니다. – sam0101

+0

투표에 관한 것이 아니라 수락에 관한 내용입니다. [답변 수락 : 어떻게 작동합니까?] (http://meta.stackexchange.com/a/5235)를 읽으십시오. –