2011-05-03 4 views
0

나는 두 가지 방법을 내 signeduser 모델에있다 :왜 여기에 링크가 생성되지 않습니까?

def build_invitation 
    self.create_invitation 
end 

def generate_url 
    self.invitation.invitation_url = "http://www.dreamstill.com/?id=#{self.invitation.id}" 
end 

또한이 두 가지 방법을 호출하는 사용자 지정 레이크 작업이 있습니다.

task :generate_url => :environment do 
    SignedUser.all.each do |user| 
    user.build_invitation 
    user.generate_url 
    end 
end 

초대장이 생성되었지만 URL은 초대장으로 생성되지 않았습니다. 내가 그것을 구하지 않았기 때문일 수 있겠는가? 방법을 수정하려면 어떻게해야합니까?

답변

2

과제의 결과를 저장하는 것을 잊어 버린 것처럼 보이며 객체를 삭제하면 잃어 버리게됩니다.

task :generate_url => :environment do 
    SignedUser.all.each do |user| 
    user.build_invitation 
    user.generate_url 
    user.save(false) 
    end 
end 

유효성 검증을 실행 방지 save에 인수로 false을 전달하고 기본적으로 저장되도록합니다. 이는 사용자 레코드가 유효하지 않은 상황 (예 : 오래된 레코드에 새로운 요구 사항이 적용됨)과 같은 이유로 도움이 될 수 있지만 어쨌든이 변경 사항을 저장하려고합니다.

+0

코드는 무엇입니까? 'invitation.save'? – user730569

+0

하지만 초대장을 저장하고 있는데 사용자가 아닌데 ... 'user.invitation.save (false)'가 초대장을 저장하겠습니까? – user730569

+0

tadman이 제공 한 코드를 실행 해 보시지 않겠습니까? – Zabba

관련 문제