

railsでアプリをいくつか作りました。

classは慣れてきたのですが、moduleがいまいちわかりません。  
classと違いが無いように見えるのですが何が違い、どのように使い分けるのでしょうか。


CC BY-SA 3.0
2016-04-04T12:19:50.780
23740
2016-04-11T10:13:25.077
9149
question
ruby-on-rails ruby
rubyのclassとmoduleの使い分け


複数のclassにまたがるメソッドを継承ではなく合成したいときにmoduleを作ります。

class => インスタンス化できる。継承できる。  
module => インスタンス化できない。名前空間とメソッドの入れ物。メソッドをmixinできる。

railsでは、ActiveSupport::Concernを使ってmoduleを作ることが多いです。

[ [Rails] ActiveSupport::Concern の存在理由 - Qiita
](http://qiita.com/castaneai/items/6dc121ce6ff100614f42)

例えばファイルをアップロードするコントローラでアップロード機能だけをconcernとして実装すると汎用性の高い（使い回すことができる）アプリケーションといえるでしょう。


CC BY-SA 3.0
2016-04-11T10:13:25.077
23913
2016-04-11T10:13:25.077
15010
23740
answer