私はこの紛らわしいエラーメッセージActiveRecord::RecordNotUnique
Railsの/ MySQLのActiveRecordの:: RecordNotUnique
は、これは私のモデルである:artisan.rb
:
class Artisan < ActiveRecord::Base
require 'csv'
validates :nom_entreprise, presence: true
validates :nom_entreprise_format_url, presence: true
validates :adresse_1, presence: true
validates :code_postal, presence: true
validates :ville, presence: true
validates :gps_latitude, presence: true
validates :gps_longitude, presence: true
validates :url_site_artisan, presence: true
validates :telephone, presence: true
csv_text = File.read('artisans.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
Artisan.create!(row.to_hash)
end
end
コントローラ:
class ArtisansController < ApplicationController
def index
@artisans = Artisan.all
end
end
私もあなたを与えるschema.rb
:
create_table "artisans", force: :cascade do |t|
t.string "nom_entreprise", limit: 255
t.string "nom", limit: 255
t.string "prenom", limit: 255
t.string "adresse_1", limit: 255
t.string "adresse_2", limit: 255
t.integer "code_postal", limit: 4
t.string "ville", limit: 255
t.float "gps_latitude", limit: 24
t.float "gps_longitude", limit: 24
t.string "description", limit: 255
t.string "url_site_artisan", limit: 255
t.string "url_voir_plus", limit: 255
t.float "telephone", limit: 24
t.string "nom_entreprise_format_url", limit: 255
t.boolean "visible_site_web"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
少なくとも最後のではなく、で3210
、エラーメッセージ:
Started GET "/admin/artisans" for ::1 at 2017-07-12 11:40:37 +0200
Processing by RailsAdmin::MainController#index as HTML
Parameters: {"model_name"=>"artisans"}
[RailsAdmin] Could not load model Artisans, assuming model is non existing. (uninitialized constant Artisans)
(0.2ms) BEGIN
SQL (1.0ms) INSERT INTO `artisans` (`id`, `nom_entreprise`, `nom`, `prenom`, `adresse_1`, `adresse_2`, `code_postal`, `ville`, `gps_latitude`, `gps_longitude`, `description`, `url_site_artisan`, `url_voir_plus`, `telephone`, `nom_entreprise_format_url`, `visible_site_web`, `created_at`, `updated_at`) VALUES (10, 'La Brasserie du Baril', 'NULL', 'NULL', '4, Rue Champlain', 'NULL', 29200, 'Brest', 48.3818645, -4.529462500000022, 'NULL', 'http://www.brasseriedubaril.com', 'NULL', 9.0, 'la-brasserie-du-baril', 1, '2017-07-12 09:40:37', '2017-07-12 09:40:37')
(0.2ms) ROLLBACK
Completed 500 Internal Server Error in 24ms (ActiveRecord: 1.4ms)
ActiveRecord::RecordNotUnique (Mysql2::Error: Duplicate entry '10' for key 'PRIMARY': INSERT INTO `artisans` (`id`, `nom_entreprise`, `nom`, `prenom`, `adresse_1`, `adresse_2`, `code_postal`, `ville`, `gps_latitude`, `gps_longitude`, `description`, `url_site_artisan`, `url_voir_plus`, `telephone`, `nom_entreprise_format_url`, `visible_site_web`, `created_at`, `updated_at`) VALUES (10, 'La Brasserie du Baril', 'NULL', 'NULL', '4, Rue Champlain', 'NULL', 29200, 'Brest', 48.3818645, -4.529462500000022, 'NULL', 'http://www.brasseriedubaril.com', 'NULL', 9.0, 'la-brasserie-du-baril', 1, '2017-07-12 09:40:37', '2017-07-12 09:40:37')):
app/models/artisan.rb:17:in `block in <class:Artisan>'
app/models/artisan.rb:16:in `<class:Artisan>'
app/models/artisan.rb:1:in `<top (required)>'
エラーメッセージ冒頭には、それが存在しない原因モデル「職人」を読み込むことができなかったと述べています。それは本当だ、私はrails g model Artisan
とを走ったこのモデルを作成するにはいないrails g model Artisans
最後の一つです:!エラーがadminインタフェースではなく、ビューで発生した(まだビューには何もありません)。 管理者のArtisanのコンテンツを確認してから退席し、エラーメッセージが表示されました。
何か助けがあれば幸いです。 :)
あなたのcsvにはIDにも値があると思いますが、手動でDBに挿入しないでください。 'row.to_hash'はキー' ID'を持ち、スキップします。 Railsは 'row.to_hash.except(:id_column_name)'を使用してスキップするためにその列 – Abhi
を処理しなければなりません –