ダウンロード デモ サイトマップ API

Edgarモデル規約



Contents
  1. name
    1. 住所
      1. 手作業
      2. Enum
        1. ビットセット
          1. File アップロード
            Recent Updates
            使い方
            2012/12/23
            Edgarモデル規約
            2012/09/28
            サポート・コンサルティング
            2012/09/19
            特徴
            2012/09/19
            index
            2012/09/19


            English

            Edgar のモデルのカラム名には一定の規約があります。edgar_scaffold でモデル・コントローラ・ビューを生成する際、以下のことを考慮してカラム名を決めてください。

            [-] 1. name

            popup 選択画面に表示するモデルには name というカラムかメソッドが必須です。

            edgar_scaffold で生成するモデルには特に必要ありません。しかし、リレーションを設計する時点で belongs_to となった場合に必要になる(popup で参照される際の表示に使用される)ので、name カラムあるいはメソッドを定義しておいた方が無難でしょう。

            [-] 2. 住所

            (NOTE: まだ完全ではありませんが、現時点の仕様について述べます。)

            住所を表現するには、整数カラム(例: adrs_id)を追加し、下記のように モデルにて宣言します:

            class Author < ActiveRecord::Base
                :
              edgar_address :adrs
                :
            end

            既存のアドレスの表示が気に入らない場合は app/views/edgar/_address.html.erb 部分テンプレートをカスタマイズして下さい。

            [-] 2.1. 手作業

            今のところ、edgar_address を使う場合、モデルの初期化時に以下のような ロジックを追加する必要があります (例として test/dummy/app/models/author.rb を載せました):

            class Author < ActiveRecord::Base
              ...
              def initialize(attrs = {})
                super
                self.adrs = Edgar::Address.new if self.adrs == nil
              end
            end

            [-] 3. Enum

            EdgarにおけるEnumとは、整数定数を定義したモジュールのことです。 draw_enum() ヘルパを使うことで、任意の AR の整数カラムを、ラベル付き選択肢として表示・入力できます。

            選択肢のラベルは I18n 対応されており、ActiveRecord::Base.human_const_name() API を使って表示されます。 詳細は lib/edgar/model.rb の rdoc を参照下さい。

            [-] 3.1. 例

            以下は、Question モデルの Priority enum 選択肢を、整数カラムである @question.priority に対して表示します:

            <% edgar_form_for do |f| %>
                :
              <%= draw_enum(f, :priority) %>
                :
            <% end %>

            選択肢のラベルの国際化対応は、config.default/locales/*.yml の activerecord.enums.question/priority エントリを参照して下さい。

            [-] 4. ビットセット

            任意の整数型カラム(例: 'xyz')に対し、'XyzBitset' モジュールを定義することで ビットセットカラムとして扱うことができます。 ここで、'XyzBitset' モジュールには 2^n^ の定数値 (0x01, 0x02, 0x04, ...等、1bitのみ立っているbitflag値)を定義します。

            Edgar::FieldHelper.draw_flags() ヘルパを使って各bitflagに対応したチェックボックスを表示します。

            また、定数名に対応するロケールを定義しておくことで チェックボックスのラベルが国際化対応されます。

            [-] 4.1. 例

            実例として Edgar::ModelPermission モデルを挙げます:

            class Edgar::ModelPermission < ActiveRecord::Base
                :
              module FlagsBitset
                CREATE  = 0x01
                READ    = 0x02
                UPDATE  = 0x04
                DELETE  = 0x08
              end
                :
            end

            以下の例は:

            <%= draw_flags(f, :flags) %>
                :

            フォーム上で、以下のようなチェックボックスとして表示されます:

            ここで、 f は FormBuilder 変数です。

            [-] 5. File アップロード

            Edgar自体にファイルアップロードの機能はありませんが、 既存のモジュールである Paperclip と Remotipart を使用することで あっという間にファイルアップロードが完成します。

            Bookモデル test/dummy/app/models/book.rb 及び Bookビュー test/dummy/app/views/books/ を参照下さい。


            Get Edgar at SourceForge.net. Fast, secure and Free Open Source software downloads | Generated by juli 1.17.00