我有一个分支模型
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
答案 0 :(得分:0)
Active Record存在错误,您需要升级Rails,或将ruby从2.2降级到2.1.8或更低。