質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

466閲覧

外部キー制約がうまくいかずエラーが解消されない。

merryken

総合スコア30

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2017/12/16 04:43

編集2017/12/16 04:56

CommentにPostのuuidに対する外部キー制約をつけたいのですが、うまくいきません。

環境は下記となります。
rails 5.1.4
mysql2 0.4.10

■Postモデルのマイグレーション class CreatePosts < ActiveRecord::Migration[5.1] def change create_table :posts, :id => false, :primary_key => "uuid" do |t| t.string :uuid, limit: 36, null: false t.text :content t.timestamps end execute 'ALTER TABLE posts ADD PRIMARY KEY (uuid);' end end
■Commentモデルのマイグレーション class CreateComments < ActiveRecord::Migration[5.1] def change create_table :comments do |t| t.string :content t.string :ip t.string :post_uuid t.timestamps end add_foreign_key :comments, :posts, column: :post_uuid end end

データベースの作成まではできるのですが、undefined method `sql_type' for nil:NilClassというエラーが出て先に進みません。
どなたかわかるかたご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんにちは。Rails 初心者です。参考までに。書籍で見たところ、primary_key オプションは、id オプションが true の場合のみ---となっています。

主キーが自動的に作られないように、ということで、id オプションを false にされているとおもいます。自分もそう判断するのが、自然に思えます。しかし、Primary_key オプションは、それを受け付けない仕様のようですね。

上書きしないように、別のテーブル名にして、
:id => true, :primary_key => "uuid"
とされては、どうでしょうか?

投稿2017/12/19 02:13

nekoyama7

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問