오케이,이 이상한 일을 발견했습니다. 내 사용자 모델에이 있습니다.두 개의 활성 레코드 콜백으로 레코드 업데이트
after_create :assign_role, :subscribe_to_basic_plan
def assign_role
self.role = 1
self.save
end
def subscribe_to_basic_plan
self.customer_id = "hello"
self.save
end
(코드 설명을 위해 단순화)
내 사용자를 작성하고 내가 role: 1, customer_id: nil
를 얻을 콘솔에서이를 확인
after_create :assign_role, :subscribe_to_basic_plan
def assign_role
self.role = 1
end
def subscribe_to_basic_plan
self.customer_id = "hello"
self.save
end
은 role: 1, customer_id: "hello"
이다. 따라서 콜백에서 처음으로 .save
만 읽는 것처럼 보입니다. 나는 정확한 행동과 그 이유를 이해하고 싶습니다. 나는 이것을 찾아내는 데 많은 시간을 할애했고 비슷한 것을 다시 만나기를 원하지 않는다.
편집 :
아마도 도움이 될 것입니다. self.save를 사용할 때! in subscribe_to_basic_plan
오류가 발생하여 레코드가 저장되지 않습니다. self.save!
을 assign_role에두면 아무 것도 변경되지 않으므로 문제는 두 번째 .save
과 분명합니다.
어떤 모델 유효성 확인이 있습니까? – Rose
나는': validatable' 옵션과 함께 devise를 사용하고 있습니다. 그 너머에 아무것도. 그래서 기본적인 이메일과 패스워드 확인 – redFur