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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails 6

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

Q&A

0回答

218閲覧

belongs_toがうまくいきません。

hirofumiimoto

総合スコア12

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails 6

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

0グッド

0クリップ

投稿2020/11/30 07:11

前提・実現したいこと

現在、自動車メンテナンス通知アプリを作成しています。
車に関する詳細を記載するdetailモデルと名前とメールとパスワードを保存するuserモデル(deviseで作成)を作成しており、これらのモデルを紐づけました。userモデルのインスタンスを取得したいのですが、できないので困っています。どなたかご教示頂ければ幸いです。

発生している問題・エラーメッセージ

undefined method `user' for nil:NilClass Did you mean? super

index.html.erb(3行目がエラー箇所です)

<%= @data.each do |obj| %> <tr> <td><%= obj.user.username %></td> <td><%= obj.user_id %></td> <td><%= obj.engine_oil_day %></td> <td><%= obj.tire_day %></td> <td><%= obj.oil_element_day %></td> <td><%= obj.air_element_day %></td> <td><%= obj.blade_day %></td> <td><%= obj.mileage %></td> </tr> <% end %>

detail.rb

class Detail < ApplicationRecord belongs_to :user end

user.rb

class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_one :detail end

user.rb

class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_one :detail end

###create_details.rb

class CreateDetails < ActiveRecord::Migration[6.0] def change create_table :details do |t| t.date :engine_oil_day t.date :tire_day t.date :oil_element_day t.date :air_element_day t.date :blade_day t.integer :mileage t.integer :user_id t.boolean :status # t.references :user, foreign_key: true t.timestamps end end end

###devise_create_users.rb

class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.inet :current_sign_in_ip # t.inet :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end

###add_username_to_users.rb

class AddUsernameToUsers < ActiveRecord::Migration[6.0] def change add_column :users, :username, :string end end

試したこと

optional:trueや外部キーをつけたりしましたが、上手くいきませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

maisumakun

2020/11/30 07:43

ビューに供給している@dataは、どのように生成していますか?
hirofumiimoto

2020/11/30 07:45

def index @data = Detail.all end で生成しています!
maisumakun

2020/11/30 07:48

パット見は問題なさそうですね… ビュー側で@data.inspectのようにして、狙ったものが来ているか確認してみるのも1つの方法です。
hirofumiimoto

2020/11/30 07:50

了解しました! 一度@data.inspectで確認してみます! ご対応ありがどうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問