电子邮件Rails中的模型和电子邮件列冲突

时间:2013-04-13 18:44:37

标签: ruby-on-rails email database-design

我有一个提交者模型,其中包含电子邮件列。我还有一个电子邮件模型,其中包含电子邮件后缀列。

我的问题(我相信)是因为我的提交者模型有一个电子邮件列,当我尝试使用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>

Submitter.rb 有一个has many :emails Email.rb 有一个belongs_to :submitter关联。

2 个答案:

答案 0 :(得分:0)

所以让我们打破这个。你说你正在尝试

submitter.email.suffix

但是,您的模型没有此类:email关联。相反,您已声明您的Submitter模型已

has_many :emails

这意味着:

  1. 要在某个:email实例Submitter上打印submitter属性,请使用

    puts submitter.email
    
  2. 要通过您的:prefix关联打印与Email相关的每个submitter实例的has_many属性,您需要循环显示它们

    submitter.emails.each do |e|
      puts e.suffix
    done
    
  3. 目前还不清楚你究竟在做什么尝试,但希望这会在你的结局中消除一些混乱;到目前为止,没有方法命名冲突

答案 1 :(得分:0)

submitter.email.suffix无效,因为它会返回提交者“email”,这是一个字符串,而不是电子邮件实例。

submitter.emails.each(&:suffix)

应该有效。 submitter.emails将返回电子邮件的实例,并且他们有suffix方法(根据您的说法)。