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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

解決済

2回答

1579閲覧

messageモデルとuserモデルのアソシエーションができない

RyosukeKuwabara

総合スコア8

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/05/07 14:55

前提・実現したいこと

messageモデルとuserモデルのアソシエーションで、messageに紐づくユーザーの名前を書き出したい

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

user.nameが定義されていないと出てしまう

Showing /Users/ryousuke/projects/chat-space/app/views/messages/_message.html.haml undefined method `name' for 3707:Fixnum Trace of template inclusion: app/views/messages/index.html.haml

該当のソースコード

haml

1//eachで変数を定義 2 .right-content__messages.clearfix 3 .right-content__messages__container 4 .right-content__messages__box 5 -@messages.each do |message| ←変数定義 6 = render partial:"message", locals:{message: message}

haml

1//部分テンプレで切り出し 2.right-content__messages__box 3 .right-content__messages__box__username 4 %h4 #{message.user_id.name}←問題の箇所 5 .right-content__messages__box__time 6 %p #{message.created_at} 7 .right-content__messages__box__content 8 %p #{message.content}

試したこと

・アソシエーションの確認
・外部キーの設定
・DB内データの有無確認

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

ruby

1class MessagesController < ApplicationController 2 def index 3 @groups = current_user.groups 4 @group = Group.find(1) 5 @messages = Message.where(group_id: params[:group_id]).order("created_at ASC") 6 end 7end
class Message < ApplicationRecord belongs_to :user belongs_to :group end
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :messages has_many :group_users has_many :groups, through: :group_users end
ActiveRecord::Schema.define(version: 20180507143441) do create_table "group_users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.integer "group_id" t.integer "user_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["group_id"], name: "index_group_users_on_group_id", using: :btree t.index ["user_id"], name: "index_group_users_on_user_id", using: :btree end create_table "groups", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["name"], name: "index_groups_on_name", using: :btree end create_table "messages", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false t.text "content", limit: 65535, null: false t.string "image" t.integer "user_id", null: false t.integer "group_id", null: false t.index ["group_id"], name: "fk_rails_841b0ae6ac", using: :btree t.index ["user_id"], name: "fk_rails_273a25a7a6", using: :btree end create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name", null: false t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["email"], name: "index_users_on_email", unique: true, using: :btree t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree end add_foreign_key "group_users", "groups" add_foreign_key "group_users", "users" add_foreign_key "messages", "groups" add_foreign_key "messages", "users" end

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

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

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

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

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

guest

回答2

0

ベストアンサー

Fixnumにnameというメソッドは生えていない、というエラーメッセージですね
見た感じ message.user_id.name ではなく message.user.name とすると正しく動きそうです。

投稿2018/05/07 15:13

set0gut1

総合スコア2413

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

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

RyosukeKuwabara

2018/05/07 15:22

早速試してみたところ、解決しました! 迅速なご回答ありがとうございます!
guest

0

早速試してみたところ、解決しました!
迅速なご回答ありがとうございます!

投稿2018/05/07 15:20

RyosukeKuwabara

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問