controllerのネームスペース
resource
見る側のcontextを表すようにする感じ。
管理者からしか見ないものを作るなら、admin
などをつける。
api
から見られるものを管理したいからapi
、
バージョン管理したいapi/v1
。
modelのネームスペース
controllerにnamespace
がついているからといって、つける必要はない。
#bad
Admin::ArticleController
Admin::Article
#good?
Admin::ArticleController
Article
articleは管理者から見ても、ユーザーからみてもarticle。
名前がどうしても被ってしまう時に、コンテキストとして使う。
group/message
article/message
など。
必要ないネームスペースを付与すると
いろいろなところで記述が冗長になる。
active_recordのリレーションにclass_name
optionの指定や、
URLヘルパーに配列で、ネームスペースを渡さなければならない等。
生産性を上げるため、出来るだけ避けるべきだと思う。
moduleのネームスペース
共通で利用されるものはconcerns
にまとめる。
機能をコンテキストで分けて管理したい場合。
userの管理画面側でしかつかわない機能
user/admin
userの状態に関する機能をまとめたい
user/status
それらをuserでincludeする。
参考
http://qiita.com/srockstyle/items/5b0bf6fe2a78e1aa7363
http://qiita.com/blueplanet/items/522cc8364f6cf189ecad
http://techracho.bpsinc.jp/hachi8833/2014_03_03/15619
http://postd.cc/how-dhh-organizes-his-rails-controllers/