Работа со связанными моделями - PullRequest
0 голосов
/ 23 декабря 2011

В моем приложении очень простая ассоциация. Пользователь has_many Emails, эта связь работает, как и ожидалось, при создании / обновлении / удалении.

Как бы то ни было, когда я пытаюсь отобразить информацию, это то, где вещи становятся немного сложнее.

В моем контроллере у меня есть следующий бит кода:

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 Ответ

3 голосов
/ 23 декабря 2011

Вместо этого сделайте что-нибудь подобное:

 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...