10/02/16 21:17:26
四階層モデルですねわかります
967:nobodyさん
10/02/16 23:27:40
(´・ω・`)
968:nobodyさん
10/02/16 23:33:25
controllerとmodelの間にサービス層が欲しい。
ある程度以上の規模になったら絶対必要だと思うんだけど皆はどうしてるんだろう。
独自に層を挟むのはアリなのかな?
969:nobodyさん
10/02/17 00:16:32
presenter層について紹介。
URLリンク(kpumuk.info)
これはrailsのブログでも紹介されていたよ。
URLリンク(weblog.rubyonrails.org)
970:nobodyさん
10/02/17 00:17:30
アリでしょ。
app/modelsの中に勝手にクラス作ればOK
971:nobodyさん
10/02/17 00:31:26
>>970
sample codeがみたい
972:968
10/02/17 00:36:13
>>969
>>970
ありがとうございます。
>>969
こんなプラグインがあるんですね。参考になりました。
ただapp直下に新しいディレクトリ作るのは少し抵抗あります。。
>>970
独自に作る場合はmodels以下に作るべきでしょうか?
個人的には、サービス層はコントローラクラスに依存するからcontrollers以下に作った方がすっきりしそう。
例えばloginコントローラ内でabcモデルとxyzモデルを利用する処理がある場合、サービスクラスを保持するファイル名はlogin_serviseのようにコントローラ名に依存すると思います。
なのでcontrollers以下に入れた方が綺麗かなぁと。ほとんど好き嫌いの問題だけど。
973:nobodyさん
10/02/17 01:07:35
サービス層はコントローラじゃないんだからcontrollers以下に作るのはおかしいと思うけどね。
サービス層はサービス層用にディレクトリ作って、まとめたらいいんじゃないかな
974:nobodyさん
10/02/17 12:50:45
ごめん、ちょっとわかんなくなってきた。
Service / Model / Controller の役割を誰か例付きで解説して。
975:nobodyさん
10/02/18 16:38:59 I3xk6O8m
Wikipediaのダウンロードできるデータファイル一覧
URLリンク(www.mwsoft.jp)
976:nobodyさん
10/02/18 18:26:01
>>969
これは、「層」というか、ControllerとViewに介在してシンプルにするパターン(って書いてあるけど)かなあ。
>>968,973,974
質問にもなるけどサービス層として切り出したいものって、
いわゆる「ビジネスロジック」ってやつかな、と思ってるんだけど合ってる?
データに属していない処理(複数のモデルが関わっていて、どのモデルにも置きにくい)で、
Webにも依存しないので単独でも起動できるようなものを、
「サービス」としてまとめたいのかなと思った。
(Railsの)ControllerはWeb依存なのでView間の遷移とかデータをViewにパスするとかを専門でやる。
俺のイメージはこんなん。
977:973
10/02/18 23:36:13
>>976
自分の言っているサービス層は、そういう意味だと思う。
モデルまたはサービス層はWebに依存しないようにして
runnerやconsoleで動作確認しやすいように作ってる。
とりあえず、今はlib/services以下にサービス層を作って置いてる
lib/services/sample_service.rbという感じ。
Services::SampleServiceという感じで名前が長くなるのがちょっと面倒だけど。
サービスを作る時の基準ってみんなどうしてるのかな。
自分は複数のモデルが絡むトランザクション処理とかだけサービスにまとめて、
単一のモデルで簡潔する処理は、そのモデル内に書いてる。
978:nobodyさん
10/02/19 02:41:48
libに置くのは最悪だろ
アプリケーションから取り外して再利用できるコードを置く場所
979:977
10/02/19 02:48:31
>>978
自動で読み込まれるところに置きたい
モデルとは区別したいので、app/models以外に置きたい
この2点で考えると、lib/serviceというディレクトリに置くのが手っ取り早いってだけで
今はそうしてる。
他にいい場所あったら教えて欲しい。
app/services以下に置く事にして、
environment.rbあたりにapp/services/*.rbをrequireする処理を書けばいいかな。
980:nobodyさん
10/02/19 08:35:28
そのへんのためかどうか知らないけど、Rails3ではRails.root/app/ の下の
ディレクトリが全部load pathに含まれるようになる。
981:nobodyさん
10/02/19 09:10:06
そういうのはrorは弱いしな。
梅。
982:nobodyさん
10/02/19 11:40:07
>>979
environment.rb に
# Add additional load paths for your own custom dirs
# config.load_paths += %W( #{RAILS_ROOT}/extras )
っていう箇所があるからそうすればいいのでは。
config.load_paths += %W( #{RAILS_ROOT}/app/services )
983:nobodyさん
10/02/19 12:05:30
埋める前にそろそろ次スレ他てようぜ
984:nobodyさん
10/02/19 16:13:46 WbFNhWFy
【Ruby】Ruby on Rails Part9
スレリンク(php板)
985:nobodyさん
10/02/19 23:08:27
それじゃ埋め。
986:nobodyさん
10/02/20 01:47:12
埋められまsrん。