2013-09-28 3 views
0

두 개의 문자열 표현식을 비교할 때 "batman" != "batman" 캔트 객체를 생성 할 때 하지만 "batman" != "robin" 객체를 성공적으로 만들었다면 어떤 일이 발생하고 있습니까?문자열에서 before_save를 비교하는 문자열

class WebsiteLink < ActiveRecord::Base 
    attr_accessible :external 

    before_save :external? 


    private 
    def external? 
    if "batman" != "batman" 
     self.external = true 
    else 
     self.external = false 
    end 
    end 
end 

답변

2

필터 체인 정지 false 복귀 before_filter 경우. 마지막 표현식의 반환 값 (예 : self.external =)을 save에 반환하므로 falseself.external에 할당하면 Ruby가 반환하지 않습니다.

가 BTW : self.external = "batman" != "batman" 훨씬 짧고보다 같은 작업을 수행합니다

class WebsiteLink < ActiveRecord::Base 
    attr_accessible :external 

    before_save :determine_external 

private 
    def determine_external 
    self.external = "batman" != "batman" 
    true 
    end 
end 
: 당신이 당신의 예 external이 false로 지정된 경우에도 작업 할 경우에 따라서

if "batman" != "batman" 
    self.external = true 
else 
    self.external = false 
end 

, 당신은 명시 적 true을 반환해야

관련 문제