Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.0.3-通过未定义的方法';名称';对于nil:NilClass-仅在生产时_Ruby On Rails_Ruby On Rails 4_Has Many Through - Fatal编程技术网

Ruby on rails Rails 4.0.3-通过未定义的方法';名称';对于nil:NilClass-仅在生产时

Ruby on rails Rails 4.0.3-通过未定义的方法';名称';对于nil:NilClass-仅在生产时,ruby-on-rails,ruby-on-rails-4,has-many-through,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 Branch < ActiveRecord::Base
    validates :name, presence: true

    has_many :company_branches
    has_many :companies, -> { uniq }, :through => :company_branches
end
澄清一下:我尝试了很多方法,目前在我的生产服务器上只有一个分支。即使只有一个分支,当我试图保存它时,也会出现错误


编辑:我在这里发布了完整的堆栈跟踪:

活动记录有一个bug,你需要升级Rails,或者将ruby从2.2降级到2.1.8或更低版本。

你的应用程序托管在哪里?你运行过rake db:migrate吗?该应用程序托管在自己的服务器上。我们使用capistrano进行部署,因此没有迁移问题。该应用程序现在已经运行了好几年。如果它在@company.update_attributes()等处失败,并且类为nil,这难道不意味着你的@company实例为nil吗?@OliverM我添加了stacktrace。我希望这有帮助。我认为这是正确的暗示。我刚刚注意到我在本地机器上运行2.0.0,在生产服务器上运行2.2.0,我想看看是否与此有关。非常感谢!这就是原因。
class Company < ActiveRecord::Base
    has_many :company_branches
    has_many :branches, -> { uniq }, :through => :company_branches
end
class CompanyBranch < ActiveRecord::Base
    belongs_to :branch, touch: true
    belongs_to :company, touch: true
end
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