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])