モデルアドオン設計

モデルアドオンとは

フィールド定義と、それに関連するビュー等をひとまとめにして、モデルに組み込んでいくための機能を「モデルアドオン」と呼んでいます。

モデルアドオンの構成要素

モデルアドオンを使うことの利点

ファイル構成

例えば Cms::Addon::Name という名称のアドオンを作成するには以下のファイルを配置します。

モデル

# app/models/concerns/cms/addon/name.rb

module Cms
  module Addon
    module Name
      # Concern として使用します。
      extend ActiveSupport::Concern

      # モデルアドオンとして使用するために必要です。
      extend SS::Addon

      included do
        # フィールドやリレーションを定義します。
        field :name, type: String

        # Strong Parameters で許可します。
        permit_params :name

        # 関連するバリデーションを定義します。
        validates :name, presence: true
      end
    end
  end
end

編集画面HTML

# app/views/cms/agents/addons/meta/_form.html.erb

<dl>
  <dt><%= @model.t :name %></dt>
  <dd><%= f.text_field :name %></dd>
</dl>

確認画面HTML

# app/views/cms/agents/addons/meta/_show.html.erb

<dl>
  <dt><%= @model.t :name %></dt>
  <dd><%= @item.send :name %></dd>
</dl>

多言語設定

# config/locales/cms/ja.yml

ja:
  modules:
    addons:
      cms/name: アドオン名
  mongoid:
    attributes:
      cms/addon/name:
        name: フィールド名