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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

3747閲覧

user_idのみ表示する時のcurrent_userがエラーとなる

KOO_

総合スコア58

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2019/01/31 02:47

前提・実現したいこと

現在user_idとcompanyモデルの紐付けを行なっています。目的は、userでログインした際に、user_idと関係ない記事を表示や編集させたくないためです。参考書等を読んだのですが、current_userでエラーが出てしまいます。
どこかソースコードに間違いがあるのでしょうか?
よろしくお願い致します。

該当のソースコード

migrate

120190125160142_add_user_id_to_companies.rb 2class AddUserIdToCompanies < ActiveRecord::Migration[5.2] 3 def change 4 add_column :companies, :user_id, :integer 5 end 6end

model

1 belongs_to :user 2 has_one :company

compnaycontroller

1class CompaniesController < ApplicationController 2 before_action :authenticate_user! 3 4 def index 5 @companies = Company.where(user_id: current_user.id) 6** 以下の#場合にエラーが発生します** 7 #@companies = current_user.companies 8 add_breadcrumb '会社情報一覧', :companies_path 9 end 10 11 def show 12 @company = Company.find(params[:id]) 13 14 add_breadcrumb '会社情報一覧', :companies_path 15 add_breadcrumb '会社情報詳細', :company_path 16 end 17 18 def new 19** 以下の#場合にエラーが発生します** 20 #@company = Company.new(company_params.marge(user_id: current_user.id)) 21 #@company = current_user.company.new(company_params) 22 23 add_breadcrumb '会社情報一覧', :companies_path 24 add_breadcrumb '会社情報新規登録', :new_company_path 25 end 26 27 def create 28 @company = Company.new(company_params) 29 if @company.save 30 # redirect 31 redirect_to companies_path 32 else 33 render 'new' 34 end 35 end 36 37 def edit 38 @company = Company.find(params[:id]) 39** 以下の#場合にエラーが発生します** 40 #@company = current_user.company.find(params[:id]) 41 add_breadcrumb '会社情報一覧', :companies_path 42 add_breadcrumb '会社情報編集', :edit_company_path 43 end

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

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

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

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

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

maisumakun

2019/01/31 02:49

全般にスペルミスや単数形・複数形の混在なども多いようですが、そのあたりの見直しはなされましたか?
KOO_

2019/01/31 02:53

すみません。自分で後ほど確認しますが、もし宜しければ具体的にどの点かをお伺いする事は出来ますでしょうか?
maisumakun

2019/01/31 02:56

mergeが「marge」となっていたり、has_oneなのに「companies」を呼んでいる箇所があったりします。
maisumakun

2019/01/31 02:57

あと、Railsのリレーション上は、Userが「has_one :company」ということで間違いないですか?
KOO_

2019/01/31 03:01

はい。実はアソシエーションについて最近勉強を始めたばかりで無知なところが多くて。ご指摘ありがとうございました。 後ほど修正してみようと思いますが、通常であれば上記の変更で動くはずですか?
KOO_

2019/01/31 03:13

indexは通るようなのですが、newやeditはcurrent_userを指定すると動かないようです。
guest

回答1

0

まずはcurrent_userがどのようなパラメータを保持しているのか標準出力でもsqlでも構わないので確認してみましょう。ちゃんと正しくカラムが追加されていて適切な値が入っていますか?
current_userが正しい値を持っているのであればうまくいく気がします。
current_user.idは取れていてもcurrent_user.companiesがとれていない部分から察するにマイグレーションがうまくいっていないせいで、Userモデルに:companiesなどのカラムが追加されていないような気がします。

マイグレーションを再度確認してカラムが追加されていることを確認した後、userをcreateで作り直してみてください。

投稿2019/01/31 08:21

sakas1231

総合スコア42

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問