Ruby on rails 4 NoMethodError-升级到Rails 4后新增

Ruby on rails 4 NoMethodError-升级到Rails 4后新增,ruby-on-rails-4,activerecord,Ruby On Rails 4,Activerecord,我束手无策。我升级到Rails 4.2.10,一切都很糟糕 以下是/models/product.rb的相关部分 class Product < ActiveRecord::Base delegate_attributes :price, :is_master, :to => :master delegate\u attributes不是Rails方法,看起来它来自一个或多个未被积极维护的gem 如果您正在使用的任何gem都有一个新版本,这可能会有所帮助,因为简单的回答是,“委

我束手无策。我升级到Rails 4.2.10,一切都很糟糕

以下是/models/product.rb的相关部分

class Product < ActiveRecord::Base
  delegate_attributes :price, :is_master, :to => :master

delegate\u attributes
不是Rails方法,看起来它来自一个或多个未被积极维护的gem

如果您正在使用的任何gem都有一个新版本,这可能会有所帮助,因为简单的回答是,“委托”属性的一部分将涉及获取和设置属性,因此它将为您生成
#price=

如果您想自己定义它,应该这样做(在您的
产品
类中):

或者,如果您想更明确一些:

def price=(amount)
  master.price = amount
end

谢谢我会尝试一下。我认为,这颗宝石是一个活跃的工具。也许有些东西在一起玩得不太好。这对价格很有用,但如果我尝试以同样的方式设置is_master,我会得到“堆栈级别太深”。嗯。
NoMethodError: undefined method `price=' for #<Product:0x0000000d63b980>
  product = Product.create!({
    name: "Product_#{i}",
    description: Faker::Lorem.sentence,
    store_id: u.store.id,
    master_attributes: {
      listing_folder_id: uuids[i],
      version_folder_id: uuids[i]
    }
  })

  product.price = 10
  product.save!
end
def price=(*args)
  master.price=(*args)
end
def price=(amount)
  master.price = amount
end