2011-12-23 93 views
0

在我的應用程序中,我有一個非常簡單的關聯。用戶has_many電子郵件,該協會按預期的方式按照創建/更新/刪除的方式工作。使用相關模型

如何當我試圖顯示信息這是事情變得有些困難的地方。

在我的控制器我有以下的代碼位:

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

這是什麼應該做的是創造帳戶::電子郵件模型的實例有一個記錄。

的方法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 %> 

回答

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 %> 
+0

進行此更改爲# Tempname 2011-12-23 04:26:56

+0

創建了未定義方法'get_primary_email'的新異常,我也更新了您的控制器代碼。它現在更清潔;) – Damien 2011-12-23 04:29:27

+0

工作就像一個魅力,非常感謝你的幫助。 – Tempname 2011-12-23 04:33:07