###前提・実現したいこと
scopeの使い方が理解できていないので、
Ruby on railsでグループチャットで会話できる簡単なSNSを作っています。
メッセージ送信機能を実装中に以下のエラーメッセージが発生しました。
scopeの概要がふわっとしかわかっていません。
理解しているのは、scopeで何回も使い回しができるようにモデルにメソッドを定義するということ。
書き方の基本がまだ理解できていないのか、調べても解決ができませんでした。
ご教授いただけるとありがたいです!
###発生している問題・エラーメッセージ
undefined local variable or method `params' for #<Class:0x007f8a420a30b0>
###該当のソースコード
####models/message.rb
class Message < ApplicationRecord belongs_to :user belongs_to :group scope :current_group, -> { where(group_id: params[:group_id]) } end
####message_controller.rb
class MessagesController < ApplicationController before_action :get_group, only: [:index, :create] def index @groups = current_user.groups.includes(:users) @message = Message.new @messages = Message.current_group.order(created_at: :DESC).includes(:user) @users = @group.users end def create @message = Message.new(create_params) @message.user_id = current_user.id if @message.save redirect_to group_messages_path(@group) else flash.now[:alert] = "メッセージが保存できませんでした" render action: :index end end private def create_params params.require(:message).permit(:body).merge(group_id: params[:group_id]) end def get_group @group = Group.find(params[:group_id]) end end
###試したこと
group_idを引数で渡してみたり、そもそもparamsが使えないようなので、書き換えたいところですが、うんうん唸って結局わかりせんでした。
scopeについて調べられるだけ検索をかけましたが、簡易的な説明しかなく困っています。
###補足情報(言語/FW/ツール等のバージョンなど)
rails ~> 5.0.0

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/27 13:39