2016-12-08 7 views
0

と私はchat_id欄には限界8と私の移行を作成しました:数はActiveModelのための範囲外である::タイプ::整数リミット4

class CreateChat < ActiveRecord::Migration[5.0] 
    def change 
    create_table :bots do |t| 
     t.integer :user_chat_id, null: false, limit: 8, unique: true 
     ... 
     t.timestamps 
    end 
    end 
end 

を移行が完全に作成され、私はそれにデータを挿入することができます。 しかし、私はない場合:リミット4.

class Chat < ApplicationRecord 
    self.primary_key = 'user_chat_id' 
end 

次のエラーが発生し、5187762395178250はActiveModelのための範囲外である::タイプ::整数私が研究し、ドキュメントに見えたが、私がやりましたそれについて何も見つかりません。あなたは、デフォルトではIDです主キーの作成を抑制する必要があるよう

+0

エラーの原因について詳しく知ることができますか?あなたはそれが何をしてそのエラーを投げているのですか?関連するトレースも投稿できますか? – vee

+0

@veeたとえば、私はacess:http:// localhost:3000/chat/5187762395178250と表示されます。このエラーは表示されますが、数値が小さい場合はエラーは発生しません。私はそれがActiveModel検証だと思います。 –

+0

データベース内の主キーの作成を抑止する必要があるようです。デフォルトではidです。したがって、移行をロールバックし、次の行を含めるように移行ファイルを変更してください。 –

答えて

0

が見えます。だから、移行をロールバックし、最初の行が含まれるように移行ファイルを変更します。

create_table :bots, id: false do |t| 
    t.integer :user_chat_id, null: false, limit: 8, unique: true 
    ... 
    t.timestamps 
end ... 

あなたがuser_chat_idに適用されるオプションが主キーになります。

+0

詳細はこちらをご覧ください:http://ruby-journal.com/how-to-override-default-primary-key-id-in-rails / –

関連する問題