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