2013-11-26

Rails 4 で concens を使ってみた

Rails 4 でコーディング中、定数はどこに置くものか周りに聞いてみた。そしたら、「クラスに関係の深い定数は concens に入れてしまう」という応えをもらったので、concerns を使ってみる。

concerns ディレクトリーは Rails 4 から導入されたディレクトリーで、app/models/concerns や app/controllers/concerns に置かれる。クラスに共通するコードを置くのが目的みたい。

今回はクラス Foo で使う、文字列定数 HOGEHOGE を定義してみる。

クラス Foo

app/models/foo.rb の中身:

class Foo
  include ActiveModel::Model
  include Hogehoge

  attr_accessor :text

  def initialize(params = nil)
    self.text ||= "\n" + HOGEHOGE;
  end
end

モジュール Hogehoge

app/models/concerns/hogehoge.rb の中身:

module Hogehoge
  extend ActiveSupport::Concern

  HOGEHOGE = <<-EOS
ほげほげの内容
複数行でも OK
EOS
end

あとがき

定数をモジュールに書き出して見通しが良くなった。concerns ディレクトリーを勝手に見に行ってくれるのも楽。こんな書き方もあるのかと勉強になった。

No comments:

Post a Comment