PetanizeItem @ AboutPetanize

ぺったんRシステムに預けられるデータ及びデータ型を「アイテム」と言う。ペタナイズの最も低いレイヤーで、この要件を満たしていなければ、ぺったんRでデータを扱うことができない。

特徴

アイテムは誰の所有物でもないので、閲覧に権限は必要ない。必ず公開となる。オーナーがいないので、編集できない。作成・更新のための機能は用意するが、アイテムのレイヤーでそれを実行することは無い。アイテムは実質、読み込み専用である。

要件

必須カラム

  • id
  • 更新日時
  • 作成日時

名称変換

データを自在に操るには、アイテム名を様々な形に活用できなければならない。なぜなら、 railsなどの一般的なフレームワークでは命名規則が決まっているから。

ペタナイズ種別

どのようにペタナイズされたかを調べるための機能。フラグで判別する。

取得機能

  • データを取得する。
  • リストを取得するための条件。

権限

拡張機能

拡張性アイテムであれば、機能を拡張する。

  • テンプレートを参照したアイテムを、テンプレートに従って機能拡張する。

補充

  • 新規作成するときにデフォルト値を補充する。アイテム全体に共通する補充があるなら、ここで処理する。
  • 更新するときに変更不能な項目を強制的に上書きする。アイテム全体に共通する補充があるなら、ここで処理する。

検証機能

アイテム全体に共通する検証があるなら、ここでまとめて処理する。

  • テキスト項目文字コードはすべてutf8で統一されていないと表示の際にページが崩れてしまう。

機能

名称変換

self.item_name

スネークケース単数形 「アイテム名」として利用される基本的な表現形式。

  • item_name

self.singular

キャピタルケース単数形 クラスやモジュールを取得する時などに使う。

self.class_name

self.singularの別名

self.table_name

スネークケース複数形 パス名やテーブル名などに使う。

  • item_names

self.plural

ほとんど使わない。

ペタナイズ種別

self.item?

self.content?

self.element?

self.root?

権限

user_visible? operators

サーバ専用の機能。

公開モードならゲストは許可、 SNSモードなら読者は許可。公開フラグを持つコンテンツの時、オーナーなら許可。

visible? operators

SNSモードの権限を満たしているか、チェックする。

補充

supply_default

overwrite

サーバ専用の機能。

user_visible? operators

検証機能

self.valid_encode_columns

サーバ専用の機能。

モデルのマニフェストからテキスト型の項目を見つけて検証しておく。

valid_encode

サーバ専用の機能。

文字列のカラムの文字コードを検証する。ブラウザからの入力は期待する文字コードで送られてくるが、スクリプトを使ってAPI経由で入力されるデータは必ずしも正しい文字コードとは限らない。もし間違った文字コードで受け取ってしまうと、ページに表示するときに文字コードが混ざってエラーとなる。これを表示側で対応するのは困難なので、入力側で弾く。本来ならこの検証をバリデーターで行うのが正しいが、事情が特殊なため、このように個別に実装してある。

その他の便利機能

マニフェストの要件には含まれないが、アイテムレベルで実装されていれば役に立つ機能。

list_where *

コンテンツ一覧を取得するための条件を返す。

list_order *

コンテンツ一覧を取得するための条件を返す。

list_opt *

list_json_opt *

show item_id, operators *

show_opt *

show_json_opt *

visible_count_options

path_name with_engine = false

form_template with_engine = false