从Rails 2升级后,has_many _不能在Rails 3中工作

时间:2011-05-31 23:43:54

标签: ruby-on-rails has-many-through rails-3-upgrade

我的控制器中有以下内容:

@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 个答案:

答案 0 :(得分:2)

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

返回一个结果数组(可能只是一个项目,但仍然是一个数组)。您收到的“无方法错误”是因为Array类没有companies方法。

您要么在结果集上调用.first

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

或者只使用.find

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