(Rails) コントローラーとモデルに書くメソッドの違いって??
RailsでWebサイト的なものを個人で作っていると、コントローラーにはアクション定義して、変数を書いたり、メソッド定義したりするんだけれど、モデルクラスにはあまり書き込まない。
これは素人考えなのだろうけれど、モデルクラス使わなくない?
これはきっと大いなる間違いだろう。わからないけれど、わかる。
これは違いを理解しておかないと、へんな知ったかぶりをしそう。調べよう調べやう!!
基本的にはコントローラーとモデルのそれぞれの役割にあったコードを書き込むようにする。
● コントローラー
モデルからデータを受け取り、ビューにレンダリングさせる仕組み。コントローラのクラスにはビューで使う変数やメソッドを定義する。
○アクション(index,show,new,create,edit,update,destroy)
○ビューで扱うインスタンスを変数で定義(@user=User.newとか)
○ビューで使うメソッド(before_action: user_signed_in?とか)
など
● モデル
DBの情報を操作する仕組み。モデルクラスにはDBのレコードを取り扱うメソッドの定義を書く。
○検証機能(validate 入力内容の有無や可否の検証)
○SQL文の登録(scope SQL文に変換してくれるメソッド。これをを定義しておくことでDBのSQL管理をRubyでできて楽にする)
○アソシエーション(has_many, belongs_to)
○DBのデータを扱うメソッド(検索メソッド、レコード取得メソッド、レコード更新メソッド)
など
他にもいろいろあるけれど、細かくは都度勉強していこう。とりま、モデルクラスにはDB関連のことを記述する。
そしてコントローラーよりもモデルクラスの方がたくさん書くことがある。ということを知っておこう。
開発規模が大きくなれば、それだけメソッドや変数も増える。だからコントローラークラスとモデルクラスの使い分けやリファクタリングが大事になる。これにhelperにメソッド定義したりと、必要な知識は増えていく。