has_many _through не работает в Rails 3 после обновления с Rails 2

У меня есть следующее в моем контроллере:

@campaign = Campaign.where(:id => params[:id])
@companies = @campaign.companies.sort { |a,b| a.name <=> b.name` }

Вторая строка дает мне неизвестный метод для companies и раньше все работало нормально.

Это в моей модели кампании:

has_many :companies, :through => :contacts, :uniq => true

Я попробовал следующее, и это все еще не исправило это:

has_many :companies, :through => :contacts, :uniq => true, :source => :company

1 ответ

@campaign = Campaign.where(:id => params[:id])

возвращает массив результатов (вероятно, только один элемент, но все же массив). "Нет ошибки метода" вы получаете, потому что Array класс не имеет companies метод.

Вы либо хотите позвонить .first на наборе результатов:

@campaign = Campaign.where(:id => params[:id]).first

Или просто использовать .find:

@campaign = Campaign.find(params[:id])
Другие вопросы по тегам