1

我有一个属于关系的模型。

class Product < ActiveRecord::Base
  attr_accessible :name, :price, :request_id, :url

  # Relationships
  belongs_to :request

end

class Request < ActiveRecord::Base
  attr_accessible :category, :keyword

  # Relationships
  has_many :products

end

这是我的控制器功能 product = Product.where({ :asin => asin }).first 中的代码

     # See if the product exists
     begin
         #This throws a method not found error for where
        product = Product.where({ :name => name }).first

     rescue 
        Product.new
             # This throws a method not found error for request_id
        product.request_id = request.id
        product.save
     end

我正在尝试创建一个新的产品对象,例如 product = Product.first(:conditions => { :name => name })

当我打电话给我时,我收到一条错误消息,说undefined method 'first' for Product:Class 我尝试做 Product.new 并且我无法访问任何属性。我为每个人得到这个undefined method 'request_id=' for #<Product:0x007ffce89aa7f8>

我已经能够保存请求对象。我对产品做错了什么?

编辑:

事实证明,正在导入的旧产品数据类型不是 ActiveRecord 类。它使用它而不是我的 Product::ActiveRecord。我删除了该导入,一切顺利。很抱歉浪费了大家的时间。

不确定这里有什么正确的协议来处理这个问题。

4

2 回答 2

2

您的Product课程是 ActiveRecord::Base 课程吗?你可以通过运行找到:

Product.ancestors.include?(ActiveRecord::Base)

如果这返回 false,则它正在从其他地方加载类。

于 2013-03-02T15:04:28.950 回答
1

首先通过输入以下内容检查您的产品类是否设置正确:

rails c
# after console has loaded
Product

如果这看起来正确,那么我们将尝试通过调用来实例化产品:

# Create a new product
product = Product.new(name: "first product", price: 100, url: "http://www.example.com")
# Persist this object to the database
product.save

如果您缺少任何属性,请运行另一个迁移以将它们添加到 Product 表中。

如果这些建议都不起作用,请检查以确保您的项目中没有同名的现有类。这会导致各种错误,并会解释某些未找到的方法。

于 2013-02-26T02:59:38.940 回答