2011-07-05 4 views
0

내 응용 프로그램에서는 메시지를 저장하기 위해 사용자를 만들어야 할 때가 있습니다.응용 프로그램 디자인 : 조건에 따라 특정 사용자에게 전자 메일 보내기

이 경우는 방문자가 예를 들어 버튼을 클릭하여 무언가를 만들 때 발생합니다. 버튼을 클릭하지 않은 다른 사용자는 이메일없이 메시지를 저장할 수 있습니다.

나는 응용 프로그램의 다른 부분이 적응할 수 있도록 세션 변수를 설정하려고 생각했습니다. 같은

뭔가 : 메시지의 컨트롤러에서

session[:require_email] = true 

.

def create 

업데이트

더 많은 세부 사항.

  1. 방문자가 책을 만듭니다. 그런 다음 그들은 책에 정보를 추가합니다. 변경 사항을 저장하려면 책을 작성하고 관리하는 이메일을 남겨 두어야합니다. 이 전자 메일을 사용하여 계정을 만들면 전자 메일의 유효성을 확인할 수 있습니다.

  2. 이 새로운 사용자는 두 가지 방식으로 친구를 초대합니다. A : 이메일을 제공하는 양식을 작성합니다. B : 그들은 페이스 북을 통해 링크가있는 메시지를 보냅니다. 메시지를 남기거나 편집하거나 삭제할 수 있도록 이미 이메일이 있습니다.

  3. 전자 메일 링크를받는 친구들은 전자 메일을받는 즉시 계정을 만듭니다.
    Facebook에서 링크를 클릭 한 친구에게는 계정이 없습니다. 그들은 책을 방문하고 메시지를 남길 수 있지만 이메일을 떠나지 않아도됩니다. 그것들까지. 그들이 이메일을 떠나면 사용자 계정을 만든 다음 메시지를 편집하거나 삭제할 수 있습니다. 이메일을 떠나지 않으면 편집하거나 메시지를 삭제할 수 없습니다.

그래서이 세 번째 그룹을 관리해야합니다. 링크를 클릭하면 세션 변수 세션 [: guest] = true를 설정할 수 있다고 생각했습니다. [: 손님] & & PARAMS [: 사용자] [: 이메일] .blank을

그런 다음 컨트롤러에서 I는 세션하지 않는

을 다음과 같은 작업을 수행 할 수 있습니까? @user = User.new (매개 변수 [: 사용자]) 끝

괜찮습니까?
모델에서 어떻게해야합니까?

답변

0

컨트롤러와 같은 로직을 절대로 포함해서는 안됩니다. MVC의 기본 원리 중 하나는 작은 컨트롤러, 뚱뚱한 모델이라는 것을 기억하십시오. 이 유효성 검사는 사용자 모델에서 필자에게 필요한 것으로 들립니다.

validates_presence_of :email, :if => :should_validate_email? 

def should_validate_email? 
    # your logic that says if the email should be validated. 
end 

희망 하시겠습니까?

+0

감사합니다 Dominic 나는 그 아이디어를 따라 내 애플 리케이션에 사용합니다. – chell

+0

다음 질문은 논리를 수행하는 방법입니다. 모델에 어떤 액세스 권한이 있는지 알 수 없습니다.나는 세션 객체를 얻을 수 없다는 것을 알고 이메일을 검증해서는 안되는 것을 알기 위해 무엇을 사용할 수 있습니까? – chell

+0

컨텍스트가 많으면 명확한 답을 줄 수 있습니다. 나에게 사용자가 클릭 한 내용에 따라 전자 메일이 필요한지 확인하는 것은 전자 메일이 * REQUIRED *가 아니라 해당 경우 * 공급되어야한다고 생각하게 만듭니다. 두 경우의 차이점은 무엇입니까? 다른 객체가 생성 되었습니까? –

관련 문제