【问题标题】:uninitialized constant ActiveRecord::RecordNotUnique未初始化的常量 ActiveRecord::RecordNotUnique
【发布时间】:2011-08-31 05:09:07
【问题描述】:

我正在使用 rails 2.3.4、rubygems 1.3.6、activerecord 3.1.0、windows 7 home basic

这是我的代码:

def items
    @products = ShopifyAPI::Product.find(:all)
    @products.each do |a| 
    begin
    @shop = Product.new(:title => a.title , :shop_id => a.id, :product_type => a.product_type)
    @shop.save
        rescue ActiveRecord::RecordNotUnique
            redirect_to :action => "display_items"
        end
    end
    @shop_items =Product.find(:all)
    if session[:user_id]
            @log = "Welcome Administrator!"
            @logout="logout"
        else
            @log = "Admin Log in"
            @logout=""
        end

end

我在尝试保存 API 提供的数据时遇到错误“未初始化的常量 ActiveRecord::RecordNotUnique”。任何帮助,将不胜感激。谢谢。

【问题讨论】:

    标签: activerecord shopify


    【解决方案1】:

    您将 ActiveRecord 3.1 与 Rails 2.3.4 一起使用的任何原因。虽然可以使用,但不推荐。

    ActiveRecord::RecordNotUnique 仅适用于 3.0 或更高版本。我不确定是否使用您的 Rails 版本正确初始化了 activerecord 模块。

    【讨论】:

    • 好吧,我正在尝试使用 rails 2 而不是 rails 3,因为这对我来说是必需的。你建议我能做什么?
    • Mysql::Error: 键 'uni_products' 的重复条目 'Baby Ruth-49696852': INSERT INTO products (product_type, title, shop_id) VALUES('Food' , 'Baby Ruth', 49696852) ----> 这是触发异常时的错误。
    • 其实我对控制台不是很熟悉,但是上面的错误是在网络浏览器中触发的。
    【解决方案2】:

    当 ActiveRecord 尝试保存副本时返回该错误,而索引表明值需要是唯一的。在您的情况下,值 Baby Ruth-49696852 是重复的,并且违反了设置为唯一的 uni_products 键。

    要么使列不唯一,要么停止尝试保存重复记录。您是否在迁移中创建了数据库索引?您的迁移中的任何列上是否有 :unique => true

    【讨论】:

      猜你喜欢
      • 2023-01-13
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多