フキダシテンプレート @ SpeechBalloonTemplateSpec

カラム

name和名typedefaultnulllimitnote
name管理名string FALSE50フキダシを区別するための名前
classnameクラス名string FALSE50jsのクラス名
caption名前string FALSE30表示名
t並び順integer0false フキダシエクスプローラーなどでのソート順序
system_picture_id画像integer FALSE アイコン
settings拡張データstring FALSEテンプレートのjson
created_atdatetime
updated_atdatetime

作成手順

  • インポート機能からフキダシテンプレートのオブジェクトが渡ってくる。
  • データ構造はフキダシテンプレートに拡張プロパティとフキダシ枠テンプレートとセリフテンプレートがぶら下がったもの。
  • フキダシ名でユニークなので、同じ名前があれば更新。なければ新規作成。
  • テンプレートを更新したときは、そのテンプレートを参照しているコマ(上のフキダシ)を全件更新しないと一致しなくなるかも。

検証

カラム別

name

  • nullでないこと。
  • 50文字以内であること。
  • 重複がないこと。

classname

  • nullでないこと。
  • 50文字以内であること。
  • 英数字であること。

caption

  • nullでないこと。
  • 30文字以内であること。

t

  • nullでないこと。
  • 数値であること
  • 0以上の整数であること。
  • 重複がないこと。

system_picture_id

  • nullでないこと。
  • 数値であること
  • 存在するシステム画像であること。

settings

  • nullでないこと。

全体

機能

デフォルト値補充

supply_default()

パラメータ

解説

インポート処理にデフォルト値補充の仕掛けがない。

  • 補充すべきデータはない。

overwrite

パラメータ

解説

  • 新規作成のとき、テーブル内で最大のtに+1して補充する。
  • 更新のときは補充しない。

閲覧許可

visible?(roles)

パラメータ

  • roles:ロールリスト

解説

対象がフキダシテンプレートを閲覧できるかどうかを判定する

  • 必ず許可(非公開情報はない。)

一覧取得

list()

パラメータ

解説

他の一覧と違ってページ制御しない。ユーザがwebページから操作する想定はしておらず、APIから取得するための機能であって、なおかつ数量が限られる性質のデータだから。

  • フキダシテンプレートをt順に取得する。
  • 関連データとして一覧取得オプションで定義されたモデルを含む。

一覧取得オプション

下記の関連テーブルを含む

json一覧出力オプション

下記の関連テーブルのカラムを含む

  • (*)

単体取得

show(id, au)

パラメータ

  • id:フキダシテンプレートid
  • au:作家データ

解説

  • idのフキダシテンプレートを取得する。
  • 関連データとして単体取得オプションを与えることができる。
  • フキダシテンプレートに閲覧許可を問い合わせ、不許可なら、例外403 ActiveRecord::Forbiddenを発生させる。
  • 存在しないフキダシテンプレートのidを要求された場合は、例外404 ActiveRecord::RecordNotFoundを発生させる。

単体取得オプション

下記の関連テーブルを含む

json単体出力オプション

下記の関連テーブルのカラムを含む

  • (*)

更新

self.store(name, attr)

パラメータ

  • name:フキダシテンプレート名
  • attr:カラム値

解説

拡張データ(settings)はHash構造だが、jsonテキストで保存しなければならない。その前にシステム画像を展開しておく。

  • システム画像置換に依頼して、拡張データのシステム画像を展開する。
    • カラム値の拡張データを渡す。
  • 展開データをjson化して、拡張データとしてセットする。
  • インポート処理のデータ更新準備に依頼してオブジェクトをもらう。
    • フキダシテンプレート名とカラム値を渡す。
  • 上書き補充を依頼する。
  • オブジェクトを保存する。
  • オブジェクトを返す。
  • 準例外ケース
    • システム画像置換に失敗した場合は、拡張データが空で検証エラーとなる。

インポート

self.import(filename)

パラメータ

  • filename:フキダシテンプレートデータ

解説

json表記されたテキストファイルをフキダシテンプレートデータとしてインポートする。

  • ファイルインポート処理を依頼してインポートに失敗したオブジェクトを返してもらう。
    • 一件ずつ繰り返し渡ってくるフキダシテンプレートデータをブロック内で保存していく。
    • ブロックはフキダシテンプレート名とカラム値のペアで渡ってくる。
    • 更新処理を依頼して生成されたオブジェクトを返してもらう。
      • フキダシテンプレート名とカラム値を渡す。
  • ファイルインポート処理は、全件成功しない限りはロールバックする。