[ネーミング]Railsのscopeはアンダースコアはじまりで書くとすっきりすると思う
3484 ワード
コーディング規約とかサンプルアプリとかWebでいろいろ見ても、どこにもそんなこと書いてないオレオレ規約だけど、
scopeは scope :_active, -> { where(active:true) }
みたいに書いたらすっきりすると思う。
rails-style-guide README-jaJA.md at master · satour rails-style-guide · GitHub
を見ると、こういう風に書けばいいよとあるけど
user.rb
class User < ActiveRecord::Base
scope :active, -> { where(active: true) }
scope :inactive, -> { where(active: false) }
scope :with_orders, -> { joins(:orders).select('distinct(users.id)') }
end
アンダースコアではじめて
user.rb
class User < ActiveRecord::Base
scope :_active, -> { where(active: true) }
scope :_inactive, -> { where(active: false) }
scope :_with_orders, -> { joins(:orders).select('distinct(users.id)') }
end
こうするとなにがうれしいかというと、
メソッドチェーンで書いてもレシーバが変わってないのがひと目で分かる。
Modelにはメソッドもあれば、belongs_toやhas_manyなどのアソシエーションもあり、いまselfが何を指してるか注意しないといけない。
User.active.with_orders
より
User._active._with_orders
のが断然わかりやすいと思うんだがどうだろうか?
Author And Source
この問題について([ネーミング]Railsのscopeはアンダースコアはじまりで書くとすっきりすると思う), 我々は、より多くの情報をここで見つけました https://qiita.com/t_fujise/items/550f6c6fbed3e9dbf582著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .