Rails 4.0.3 - has_many通过未定义的方法' name'为零:NilClass - 仅限于生产

时间:2016-04-04 12:53:02

标签: ruby-on-rails ruby-on-rails-4 has-many-through

我有一个分支模型

class Branch < ActiveRecord::Base
    validates :name, presence: true

    has_many :company_branches
    has_many :companies, -> { uniq }, :through => :company_branches
end

和公司模式

class Company < ActiveRecord::Base
    has_many :company_branches
    has_many :branches, -> { uniq }, :through => :company_branches
end

公司可以通过company_branches拥有多个分支机构

class CompanyBranch < ActiveRecord::Base
    belongs_to :branch, touch: true
    belongs_to :company, touch: true
end

在我的本地计算机上一切正常但是当我尝试在生产服务器上保存表单时,我得到:NoMethodError (undefined method名称&#39;为nil:NilClass)`

我的控制器中的调用是@ company.update_attributes(company_params) - 控制器接收branch_ids作为数组,如branch_ids => [1, 2, 3]

控制器的有趣部分(它在@ company.update_attributes(company_params)失败):

class Admin::CompaniesController < Admin::AdminController
    respond_to :html, :json
    load_and_authorize_resource


    def update
        @company = Company.find(params[:id])
        @company.update_attributes(company_params)
        ....
    end


    private
    def company_params
      params.require(:company).permit(:id, branch_ids: [])
    end
end

澄清一下:我尝试了很多东西,目前在我的生产服务器上只有一个分支。即使只有一个单一的分支,我在尝试保存时也会收到错误。

修改:我在此处发布了完整的堆栈跟踪:http://pastebin.com/tw6hjkyF

1 个答案:

答案 0 :(得分:0)

Active Record存在错误,您需要升级Rails,或将ruby从2.2降级到2.1.8或更低。