2013-04-13 4 views
0

나는 제출자전자 메일 열이있는 모델입니다. 또한 이메일접미사 열이있는 모델입니다.이메일 모델 및 이메일 열이 레일에 충돌합니다

제 생각에는 제 제출자 모델에 이메일 열이 있기 때문에 submitter.email.suffix을 사용하여 내 이메일 모델에 접미사를 표시하려고하면 정의 된 방법이 없다고합니다.

내가 할 수있는 아이디어가 있습니까?

보기 :

보조 노트로
<% @submitters.each do |submitter| %> <tr> 
<td><%= submitter.school.name %></td> 
<td><%= submitter.first_name %></td> 
<td><%= submitter.last_name %></td> 
<td><%= submitter.email %><%= submitter.email.suffix %></td> 
<td><%= link_to 'Show', submitter %></td> 
<td><%= link_to 'Edit', edit_submitter_path(submitter) %></td> 
<td><%= link_to 'Destroy', submitter, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
</tr> 
<% end %> 
</table> 

나는 이메일의 ID를 보여주는 아무 문제가 접미사하지만 분명히 내가 대신 실제 접미사 보여주기 위해 노력하고있어 :

<td><%= submitter.email %><%= submitter.email_suffix_id %></td> 

제출자 .rbhas many :emails이고 이메일 .rbbelongs_to :submitter 연관이 있습니다.

+0

은'suffix' 이메일 방법입니까? – ted

+0

'suffix'는 내 ** 이메일 ** 모델의 열입니다. 따라서 그것이라고 가정합니다 .. – Devin

답변

0

그럼이 문제를 해결해 보겠습니다. 당신은 당신의 모델은 그러한 :email 관련이 없습니다, 당신은 그러나

submitter.email.suffix 

을 위해 노력하고 말한다. ,

  1. 일부 Submitter 예를 submitter:email 속성을 인쇄하려면

    puts submitter.email 
    
  2. 가를 인쇄하려면 사용이 대신 당신이 당신의 Submitter 모델

    has_many :emails 
    

    을했다 언급 한을 의미 각 Email 인스턴스의 :prefix 속성과 관련된 당신의 has_many 협회를 통해 submitter, 당신은 그들을 루프 필요할 것

    submitter.emails.each do |e| 
        puts e.suffix 
    done 
    

그것은 아직 정확히 이 할을 시도하고, 그러나 희망이 당신의 말에 혼란을 지 웁니다하는지 아주 불분명; 지금까지 메서드 이름 지정 충돌이 없습니다.

+0

이것은 이전과 같은 오류가 발생했습니다.그래도 고마워. – Devin

+0

더 구체적으로 말하자면, 오류는 'Devin.ODaniel ": String'에 대해'정의되지 않은 메소드 '접미사'입니다. 여기서'Devin.ODaniel '은 내': email' 속성에 저장됩니다. 그래서 내 전자 메일 모델에 액세스하려고 시도하는 대신 메서드로 "submitter.email.suffix"에 * 전자 메일 *이 표시됩니다. 이게 도움이 되나요? – Devin

+0

내 조언을 무시하는 것 같아. 'submitter.email'는''Devin.ODaniel "', ** **'Email' 모델이 아닌 String을 반환합니다. ** 당신이'String' 인스턴스에서'suffix'를 호출했기 때문에'정의되지 않은 메소드 '접미어'error'를 얻었습니다. *'Email' ** 인스턴스가 아닙니다. 당신은 당신의'제출자'**'has_many : 이메일'**이라고 말했습니다. 'submitter.emails.first.suffix'는'submitter.emails.first.suffix'와 같이'submitter.emails.first.suffix'와 같이'submitter'와 관련된'Email' 인스턴스 * (예를 들어 콜렉션의 첫 번째 인스턴스) 중 하나에서'suffix'를 호출하고자 할 때 사용할 수 있습니다. – deefour

0

submitter.email.suffix은 전자 메일 인스턴스가 아닌 문자열 인 제출자 "전자 메일"을 반환하기 때문에 작동하지 않습니다.

submitter.emails.each(&:suffix) 

. submitter.emails은 이메일의 인스턴스를 반환하며 사용자의 말에 따라 suffix 방법을 사용합니다.

+0

동일한 오류도 반환합니다. 어쩌면 내 협회가 틀렸을 까? – Devin

+0

보다 구체적으로, 에러는'Devin.ODaniel ": String'에 대해'정의되지 않은 메소드 '접미사'입니다.'Devin.ODaniel'은 제 :'email' 속성에 저장되어 있습니다. 그래서 내 전자 메일 모델에 액세스하려고 시도하는 대신 메서드로 "submitter.email.suffix"에 * 전자 메일 *이 표시됩니다. 이게 도움이 되나요? – Devin

+0

@Devin, 제출자 모델을 보여줄 수 있습니까? – ted