2011-12-23 10 views
0

私のアプリケーションでは、非常に単純な関連があります。ユーザーはhave_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 

これは何をすべきは、単一​​のレコードを持つアカウントのインスタンスを作成します::メールモデルです。

メソッド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 

を次にあなたが直接

# 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 %> 
user.primary_emailを呼び出すことができます
+0

この変更により、#の未定義メソッド 'get_primary_email 'の新しい例外が作成されました – Tempname

+0

コントローラコードも更新されました。今はきれいだよ;) – Damien

+0

魅力的なように働いてくれてありがとう、助けてくれてありがとう。 – Tempname

関連する問題