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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

633閲覧

railsでDBテーブルの紐づけをしたい

Kyouko_kisaragi

総合スコア48

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2017/12/23 04:50

rails上で、DBのテーブル同士を紐づけて値を取ろうとしています。
関連性は1:1で、テーブル設計は以下になります。

characterテーブル
イメージ説明

masterpieceテーブル
イメージ説明

characterテーブルのmasterpiece_idに、masterpieceテーブルのidを紐づける、というイメージです。参考にしたページはhttps://www.sejuku.net/blog/26617です。
characterテーブルを表示すると同時に、masterpieceを引っ張ってこれるようにしたいです。
現在のモデル内は、こうなっています。

masterpiece.rb

class Masterpiece < ActiveRecord::Base belongs_to :holder ,class_name: 'Character',foreign_key: 'character_id' end

character.rb

class Character < ActiveRecord::Base belongs_to :masterpieces, dependent: :destroy end

参考にしたページ通りにやってみたのですが、うまく値を引っ張ってこれません。
紐づけの設定がおかしいのだと思います。

ヒントだけでもいいので、教えていただけると幸いです。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

belongs_to というのは,自分のほうに相手の id を保持するカラムがあるときに使います。

今の場合,Character モデルが masterpiece_id を持っているので,Characterbelongs_to を書くのは正しいのですが,第一引数が :masterpieces と複数形になっているのはおかしくて,これは :masterpiece と単数形にしなければなりません。

Masterpiece モデルは Characeter に関連づけるためのカラムを持っていないので,belongs_to は書けません。
今の場合,一対一ということなので,has_one を使うことになるでしょう。
has_onehas_many は,相手方にこっちの id を保持するカラムがあるときに使います。

投稿2017/12/23 05:19

scivola

総合スコア2108

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問