2017-06-23 3 views
0

私は非常に単純なブログアプリケーションを使用してRoRを学習しています。新しいカテゴリを追加している間に、私は引き続き ActiveRecord :: RecordNotUniqueをAdmin :: CategoriesController#に作成します。アクティブなadminレールを使用している場合のプライマリキー違反5

レコードは既にカテゴリテーブルに存在するため、違反があります。しかし、IDは生成されたdbであり、永続的な値を使用しないでください。私は私のカテゴリ管理コントローラにpermit_paramsを追加しました。

カテゴリー管理コントローラ

ActiveAdmin.register Category do 
permit_params :id, :name 
end 

私はidが主キーであると生成DBれるべきであることを指定する方法を知りません。それは私が永続化の通常の手段を使用する場合、これは私が私の質問が明確であり、任意の適切な情報を見逃していないと思っている私の通常カテゴリコントローラ

class CategoriesController < ApplicationController 
    before_action :set_category, only: [:show, :edit, :update, :destroy] 
    before_action :category_params, :only [:create, :new] 

    def index 
    @categories = Category.all 
    end 

    def show 
    @title = @category.name; 
    @posts = @category.posts; 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_category 
     @category = Category.find(params[:id]) 
    end 

    def category_params 
     params.require(:category).permit(:name); 
    end 

end 

でうまく働きました。 また、テーブルに4つのカテゴリがある場合、違反が4回発生すると、それ以上違反がないので5回目を送信します。

これは愚かな問題のように思えるが、私は何の解決策を持っていない:(

許可のparamsから:idを削除

Ananth

答えて

0

を助けてください。

ActiveRecordのは、あなたのためのことを処理します。

ActiveAdmin.register Category do 
    permit_params :name 
end 
+0

これは機能しませんでした。 'permit_params:title、:body、:category_id'のような管理者のコントローラは、違反エラー' AdminResponse :: RecordNotUnique in Admin :: PostsController#create PG :: UniqueViolation:ERROR:重複したキー値が一意の制約 "posts_pkey" DETAIL:キー(id)=(3)はすでに存在します。 :INSERT INTO "posts"( "title"、 "body"、 "category_id"、 "created_at"、 "updated_at")VALUES($ 1、$ 2、$ 3、$ 4、$ 5) "ID"を返す – ananth

+0

私はこれを実行すると、最終的に何かユニークなものが挿入され、問題はなくなりますが、なぜキーのDB生成が機能していないのか分かりません。 – ananth

+0

**テーブルを作成した**移行を投稿できますか? INSERT文が見つかったようで、 'id'を送ることさえないので、DBレベルで何かが間違っている必要があります。 –

関連する問題