Rails 4.0.3 - has_many 通过未定义的方法 'name' 用于 nil:NilClass - 仅在生产中

Rails 4.0.3 - has_many through undefined method 'name' for nil:NilClass - only on production

我有一个分支模型

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 methodname' for 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

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