2017-06-23 25 views
0

我正在使用一個非常簡單的博客應用學習RoR,並且我剛剛獲得了活動管理員的工作。在添加新類別時,我一直收到 ActiveRecord :: RecordNotUnique在Admin :: CategoriesController#create使用活動管理滑軌時的主鍵違規5

記錄已存在於類別表中,因此存在違規。但ID是數據庫生成的,如果它不使用堅持一個獨特的價值。我在我的分類管理員控制器中添加了permit_params。

分類管理控制器

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

我不知道如何來指定id是主鍵,產生的應分貝。它工作得很好,當我用硬要正常的手段,這是我的正常類控制器

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次,因爲沒有違規行爲了。

這似乎是一個愚蠢的問題,但我沒有解決方案:(

請幫

Ananth

回答

0

從允許PARAMS取出:id

ActiveRecord的處理,對你。

ActiveAdmin.register Category do 
    permit_params :name 
end 
+0

這沒有奏效我試過了我的帖子像'permit_params:title,:body,:category_id'但仍然拋出違反錯誤'ActiveRecord :: RecordNotUnique在Admin :: PostsController#create PG :: UniqueViolation:錯誤:重複鍵值違反唯一約束「posts_pkey」詳細信息:密鑰(id)=(3)已經存在。 :INSERT INTO「posts」(「title」,「body」,「category_id」,「created_at」,「updated_at」)VALUES($ 1,$ 2,$ 3,$ 4,$ 5)RETURNING「id」' – ananth

+0

就像我說的,if我一直這樣做,它最終會插入一些獨特的東西,問題消失,但我不知道爲什麼密鑰的db代不工作 – ananth

+0

你可以發佈**遷移創建表**嗎? 數據庫級必須有錯誤,因爲INSERT語句似乎找不到,甚至不會發送'id'。 –

相關問題