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

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

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

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

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

1696閲覧

お気に入り登録ができない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2017/12/30 21:49

いつもお世話になっております。

Rails5で投稿のお気に入り機能を作成しているのですが、
バリデートエラーになってしまうようでお気に入りの処理がうまく行かずに困っています。

ruby

1#user.rb 2class User < ApplicationRecord 3 devise :database_authenticatable, :registerable, 4 :recoverable, :rememberable, :trackable, :validatable 5 6 has_many :favorites, dependent: :destroy 7 has_many :message, through: :favorites 8end

ruby

1#message.rb 2class Message < ApplicationRecord 3 validates :contents, presence: true 4 5 has_many :favorites, dependent: :destroy 6 has_many :user, through: :favorites 7end

ruby

1#favorite.rb 2class Favorite < ApplicationRecord 3 belongs_to :user 4 belongs_to :message 5end

ruby

1#favorite_controller.rb 2class FavoriteController < ApplicationController 3 4 def create 5 @favorite = Favorite.new(messages_id: params[:id], user_id: current_user.id) 6 7 if @favorite.save 8 redirect_to home_path, success: 'お気に入り登録しました!' 9 else 10 redirect_to home_path, danger: 'お気に入り登録ができませんでした' 11 end 12 end 13 14 def destroy 15 @favorite = Favorite.find(params[:id]) 16 if @favorite.destroy 17 redirect_to home_path 18 end 19 end 20 21end 22

ruby

1#routes.rb 2Rails.application.routes.draw do 3 devise_for :users 4 resources :favorite, only: [:destroy] 5 root 'home#index' 6 7 scope :messages do 8 match '', to:'messages#index', via:'get', as:'messages' 9 match '/show', to:'messages#show', via:'get', as:'messages_show' 10 match '/new', to:'messages#new', via:'get', as:'messages_new' 11 match '/create', to:'messages#create', via:'post', as:'messages_create' 12 match '/:id/add', to:'favorite#create', via:'post', as:'add_favorite' 13 end 14end 15

html

1#favorite.html.erb 2<div class="col-xs-10 col-xs-offset-1 message text-center"> 3 <%= @message.contents %> 4</div> 5 6<div class="col-xs-12 text-right"> 7 <%= link_to "お気に入り登録", add_favorite_path(@message.id), method: :post %> 8</div> 9

お気に入りのボタンを押した時のログは以下です

Started POST "/messages/10/add" for ::1 at 2017-12-31 06:48:01 +0900 Processing by FavoriteController#create as HTML Parameters: {"authenticity_token"=>"+iknfybATjIqBKiZazVXnVCSyLTQzV8kIuHV5gubBu+ObC8XbfkYyIDl6miuwgImWScRY9dWenYwFsIlGqM7Ng==", "id"=>"10"} User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1 (0.2ms) BEGIN User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1 (0.2ms) ROLLBACK Redirected to http://localhost:3000/home Completed 302 Found in 63ms (ActiveRecord: 10.0ms)

初歩的な質問で申し訳ないですが、ご教授いただければと思います。
どうぞよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Favorite.newmessages_idと書いていますが、Railsの標準的なテーブル設計ではmessage_idとなるのが普通なので、そこの列名間違いではないかと思います。

投稿2017/12/30 23:45

maisumakun

総合スコア145121

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

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

退会済みユーザー

退会済みユーザー

2017/12/31 02:04

カラム名をもともと間違えて複数形にしていたので、そこをrenameしたらできました! カラム名と合っていても複数形ではダメなのですね…勉強になりました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問