【问题标题】:has_many _through not working in Rails 3 after upgrade from Rails 2从 Rails 2 升级后 has_many _through 在 Rails 3 中不起作用
【发布时间】:2011-05-31 23:43:53
【问题描述】:

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

@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 =&gt; :contacts, :uniq =&gt; true, :source =&gt; :company

【问题讨论】:

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


    【解决方案1】:
    @campaign = Campaign.where(:id => params[:id])
    

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

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

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

    或者直接使用.find:

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

    【讨论】:

    • 我们可以继续使用find吗?我认为它已被弃用,这就是我改变它的原因......
    • 据我所知,只有 find 使用选项的调用被弃用。例如,您不应该再使用find(:all, :conditions =&gt; ...),但要通过id 查找单个记录,find(id) 仍然是首选。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2011-07-10
    • 1970-01-01
    • 2019-06-18
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多