0

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」というエラーが発生します。どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

1

Rails 2.3.4 で ActiveRecord 3.1 を使用する理由。それを使用することは可能ですが、推奨されません。

ActiveRecord::RecordNotUniqueバージョン 3.0 以降でのみ使用できます。Activerecord モジュールが Rails のバージョンで正しく初期化されているかどうかはわかりません。

于 2011-08-31T05:18:00.470 に答える
0

このエラーは、値が一意である必要があるとインデックスが示しているときに、ActiveRecord が重複を保存しようとすると返されます。あなたの場合、値Baby Ruth-49696852は重複しており、uni_products一意に設定されているキーに違反しています。

列を一意にしないか、重複レコードの保存を停止してください。移行でデータベース インデックスを作成しましたか? :unique => true移行のいずれかの列に がありますか?

于 2012-06-12T16:40:33.310 に答える