2011-05-31 59 views
1

我已經在我的控制下:的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

回答

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

返回結果的數組(可能只是一個項目,但仍然是一個數組)。您收到的「無方法錯誤」是因爲Array類沒有companies方法。

要麼你想打電話.first對結果集:

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

或者只是使用.find

@campaign = Campaign.find(params[:id]) 
+0

我們可以繼續使用發現?我認爲這是不贊成,這就是爲什麼我改變它.... – Angela 2011-06-01 00:43:06

+0

據我所知,只有'發現'調用使用選項被棄用。例如,你不應該再使用'find(:all,:conditions => ...)',而是通過id找到一條記錄,'find(id)'仍然是首選。 – 2011-06-01 01:39:34

+1

[以下是對已棄用的內容的概述](http://m.onkey.org/active-record-query-interface) – 2011-06-01 01:40:19