Ruby On Rails模型没有方法

时间:2013-02-26 01:43:59

标签: ruby-on-rails

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

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 =&gt; 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 =&gt; {:name =&gt; name})

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

得到了这个

我已经能够保存请求对象了。我的产品出了什么问题?

编辑:

事实证明,导入的旧Product数据类型不是ActiveRecord类。它使用的是而不是我的Product :: ActiveRecord。我删除了那个导入,这很好。很抱歉浪费了每个人的时间。

不确定这个问题的正确协议是什么。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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表中。

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