0

나는 사용자 모델에서 설립자 인 운동 선수로 정의 된 메소드와 기본 값 false 인 선수로 정의 된 부울 컬럼을 정의했습니다.토글 데이터베이스 값

공급자가 트위터 또는 페이스 북 중 하나입니다. 제공 업체가 공백이 아닌 경우 공백으로 설정 한 경우 아래 방법으로 선수 칼럼을 true로 토글합니다.

def athlete? 
    provider.blank? 
    end 

여러 가지 시도했지만 행운 같은 토글 방법과 같은 운이 없습니다. 나는 제공자의 열 유형을 알고하지 않기 때문에

def athlete? 
    provider.blank? 
    user.toggle!(:athlete) 
    end 

답변

1

, 나는 그것이 "" "트위터"와 "페이스 북"의 가능한 값의 문자열입니다 있으리라 믿고있어. 하지 않을 경우, 다음 true를 돌려, 이런 식으로 뭔가를 시도하고 나에게 당신은 공급자가 "트위터"또는 "페이스 북을"포함 된 경우

def athlete? 
    !provider.any? { |p| %w(facebook twitter).include?(p) } 
end 

모든이가하는 수표입니다 무엇을 얻을 알려 주시기 바랍니다.

def athlete=(athlete) 
    self[:athlete] = !provider.nil? && !provider.any? { |p| %w(facebook twitter).include?(p) } rescue true 
end 
+0

수정의 트위터, 페이스 북 또는 블랭크 : 당신이 특성을 업데이트하려는 경우

는 다음과 같이 뭔가. 나는 두번째 메소드를 시도하고이 에러를 얻었 기 때문에 속성을 업데이트하고 싶습니다 :'code'undefined method'any? ' 무응답 : NilClass – CrazyCoderMonkey

+0

새 레코드를 만드시겠습니까? 그렇다면 "공급자"가 설정되지 않고 오류의 원인이됩니다. 오류가 발생하면 코드 블록을 기본값 "true"로 업데이트합니다. 코드를 어떻게 사용하는지 알려주세요. 새 레코드를 만드시겠습니까? 업데이트 중입니까? 보기? –

+0

새 레코드를 만들지 만 공급자가 비어 있으면 기본적으로 공급자가 비어 있어야하고 운동 선수 열은 false 여야하며 true로 설정해야합니다. 이제는 오류없이 작동하지만 데이터베이스에 변경 사항을 저장하지 않으므로 운동 선수 열은 여전히 ​​false입니다. 감사합니다 – CrazyCoderMonkey