1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsのドメイン層に関して考えてみた

Last updated at Posted at 2020-06-10

自分の知りうる範囲のお話なので、ドメイン層=モデル+サービスくらいのお話で。
正しいかは全くわからないが自分の中で感じてること。

モデルの関連付け(association)

  • あるオブジェクトから他のオブジェクト(クラスの同一性は問わない)を呼び出す時に使われるものは極力ここに集約されるべき
    • current_user.followingsとか
    • 関連先のモデルでのscopeを指定することもできるようだ()
      • user.recent_followingsとか関連付け先のscope指定で可能。

モデルのスコープ/クラスメソッドでのフィルタリング

  • あるクラスのオブジェクトの集合に対して特定の条件を満たす物をフィルタリングするために使う。
    • User.recent_signupとか(命名微妙かも)

モデルのメソッド

  • あるオブジェクトの自身(の属性?)への操作があった時に使う
    • current_user.update_settings()とか
    • 他のモデルへの操作はサービスクラスに切り出した方が良いかもしれない(currnet_user.follow(another_user)とかよくないかも)??
  • あるオブジェクトの属性を組み合わせて作られる、カスタム属性を呼び出す時に使われる
    • user.full_nameとか("#{first_name} #{last_name}"だ)

サービスクラス

  • あるモデル起点で他のモデルを弄る/操作する時など?に使う
    • 中間テーブルの使われる操作とか?
    • current_user.follow(another_user)はよくないのかも
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?