등록 컨트롤러 및 암호 컨트롤러를 사용하여 사용자 모델을 업데이트 할 수 있습니다. 어떤 컨트롤러 업데이트 방법이 모델 내부에서 호출되는지 찾을 수있는 방법이 있습니까?모델 내부에 현재 컨트롤러 이름을 찾는 방법이 있습니까?
모델 안에 컨트롤러 이름을 찾고 싶습니다. 도와주세요.
등록 컨트롤러 및 암호 컨트롤러를 사용하여 사용자 모델을 업데이트 할 수 있습니다. 어떤 컨트롤러 업데이트 방법이 모델 내부에서 호출되는지 찾을 수있는 방법이 있습니까?모델 내부에 현재 컨트롤러 이름을 찾는 방법이 있습니까?
모델 안에 컨트롤러 이름을 찾고 싶습니다. 도와주세요.
모델 및 컨트롤러 레이어가 분리되어 있습니다. 모델은 컨트롤러 관련 항목을 인식하지 못합니다.
컨트롤러 이름을 모델에서 가져 오는 유일한 방법은 컨트롤러 이름을 모델로 정의 된 일부 메서드에 인수로 전달하는 것입니다.
모델에서 컨트롤러의 이름을 아는 것이 실제로 사용 된 적이 없습니다. 그러한 필요성 IMHO는 당신이 잘못 설계 한 것을 의미합니다.
전화 (유효 함)에 대한 유효성을 검사했습니다.이 경우 전화 번호없이 생성 한 사용자를 초대하는 옵션이 있습니다. 그러나 사용자가 자신의 비밀번호를 잊어 버리려고하면 "비밀번호를 잊어 버릴 수 없습니다."라는 오류 메시지가 나타납니다. 그래서 나는 암호 컨트롤러에서 요청이 왔을 때에 만 유효성 검사를 건너 뛰고 싶다. –
초대 된 사용자가 아직 활성화되지 않은 것으로 가정합니다. 따라서 활성 사용자에 대해서만 현재 상태 확인을 정의하는 방법은 무엇입니까? 어쩌면이 같은 추가 : 내가 코드를 테스트하지 않았습니다, 그래서 복사 안전하지
validates_presence_of :phone_number, if :activated?
를)
가능한 해결 방법은 다음과 같습니다
class User < ActiveRecord::Base
with_options :if => :phone_required do |user|
user.validates_presence_of :phone
end
end
phone_required
때문에 데이터베이스 열입니다 사용자를위한 이주를 작성해야합니다. 컨트롤러에서
당신은
your_user.phone_required = false
또는
your_user.phone_required = true
저장하기 전에 설정해야합니다.
모델은 컨트롤러의 태평해야하지만이 때 당신은 컨트롤러에 전달할 수 있습니다 ..class SomeModel < ActiveRecord::Base
attr :controller
end
이제 모델의 가상 속성을 사용하는 경우 달성하기 어렵지 않다 나는 강력하게 이러한 행위를 억제
업데이트 : 예 :
class SomeModelsController < ApplicationController
def update
@some_model.update_attributes(params[:some_model].merge(controller: self))
end
end
두 가지를 구분해야하는 이유는 무엇입니까? 두 업데이트의 차이점을 보여주는 코드를 게시 할 수 있습니까? 이것을 처리하는 더 좋은 방법이있을 수 있습니다. – spickermann
전화 (유효 함)에 대한 유효성 검사가 있습니다.이 경우 전화 번호없이 작성된 사용자를 초대하는 옵션이 있습니다. 그러나 사용자가 자신의 비밀번호를 잊어 버리려고하면 "비밀번호를 잊어 버릴 수 없습니다."라는 오류 메시지가 나타납니다. 그래서 나는 암호 컨트롤러에서 요청이 왔을 때에 만 유효성 검사를 건너 뛰고 싶다. –
모델에서 서비스 개체로 유효성 검사를 이동하는 것이 좋은 생각 일 수 있습니다. – spickermann