4
2

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 1 year has passed since last update.

ActiveSupport::Concernとは

Posted at

ActiveSupport::Concernとは

Modelやcontrollerで重複した処理をActiveSupport::Concernを使用することでよりDRYに記述できる機能

使用するには

  1. app/models/concerns/orapp/controllers/concerns/にファイルを作成
    • ファイル名はmoduleと同じにする
  2. included do end の中に処理を書く
    • スコープだけでなく、メソッドを定義したりもできます
    • extend ActiveSupport::Concernを忘れないように
  3. 使用したいmodelファイルの中でincludedする
  4. concernに追加したメソッドを使用する際はそのまま呼び出せます

app/models/concerns/m.rb
module M
  extend ActiveSupport::Concern

  included do
    scope :disabled, -> { where(disabled: true) }
  end
end
class Host
  include M
end

終わりに

Module#concerningとごっちゃになってしまったのでまとめてみました。
近々Module#concerningについての記事も書きます。
内部での動きは理解していないので調べてみて今度編集します。

参考

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?