使用相关模型

时间:2011-12-23 04:05:16

标签: ruby-on-rails ruby-on-rails-3

在我的应用程序中,我有一个非常简单的关联。用户has_many电子邮件,此关联按预期使用create / update / delete工作。

当我试图显示信息时,这就是事情变得困难的地方。

在我的控制器中,我有以下代码:

def prospective_user
    @users = Account::User.all_by_user_status(0)     
    @users.each do |u|
        u.email = u.email.get_primary_email
    end
end

这应该做的是使用单个记录创建Account :: Email模型的实例。

方法get_primary_email如下所示:

def self.get_primary_email
    first :conditions => ["is_primary = 1"]
end

我看到的问题是在我看来,我在下面得到例外。这有点令人困惑,因为我没有遍历电子邮件对象。

undefined method each' for #<Account::Email:0x7fcc3a5c49d8>

我用来测试的代码是:

<% @users.each do |u|%>
    <p>
        <%=debug(u.email)%>
    </p>
<% end %>

1 个答案:

答案 0 :(得分:3)

做一些类似的事情:

 class User < ActiveRecord::Base
   has_many :emails
   has_one  :primary_email, :class_name => 'Email',
                            :conditions => { is_primary: 1 }
 end

然后您可以直接致电user.primary_email

# your controller
def prospective_user
  @users = Account::User.includes(:primary_email).where(:status => 0)
end

# your view
<% for user in @users %>
  <%= user.primary_email %>
<% end %>