Ruby on Railsで飲食店の情報を管理するようなサービスを作っています。
話に関係するモデルは、以下の写真のように、User, Restaurant, Clip, Station, Category, Clip_category, Boardと言ったところです。
この中で、保存したレストランを検索するメソッドを作っています。
controllerで
station = Station.search params[:query] board = Board.search params[:query]
だいたい上のように各モデルへの操作を書いています。
ここで質問が2つあるのですが、
- current_userのクリップ(保存したレストラン)一覧を取得するようなモデルを跨ぐようなメソッドをモデル層に記述したいときはuser.rbやclip.rb、restaurant.rbなど、どのモデルに、また、クラスメソッド、もしくはインスタンスメソッドのどちらで作るべきなのでしょうか?
現状は、
Clip.search(params[:query], current_user.id)のようにクリップクラスからメソッドを生やすか
current_user.search_clips(params[:query])のようにユーザーのインスタンスメソッドを作るか
の2つで迷い、後者を採用しています。
- 今は、あるモデルについて検索するメソッドをモデルに書き、それをcontrollerで使っていますが、そもそもClip.get_with_queryのようなメソッドを作り、現在controllerで行っているような処理を全てmodelで行ってしまった方がいいのでしょうか?
controllerとmodelをどう使い分けるべきかがよくつかめていません。
以上2点です。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/02 15:31
2018/11/02 15:44 編集