This Project Has Not Released Any Files
name | 和名 | type | default | null | limit | note |
width | 幅 | integer | 200 | FALSE | コマの幅 | |
height | 高さ | integer | 80 | FALSE | コマの高さ | |
border | 枠 | integer | 2 | FALSE | コマの枠線の太さ | |
caption | 要約 | string | ||||
publish | 公開 | integer | 0 | FALSE | 公開フラグ | |
author_id | 作家 | integer | FALSE | コマの投稿者 | ||
created_at | 作成 | datetime | ||||
updated_at | 更新 | datetime |
コマは複数のモデルの集合体。コマ絵、フキダシ、景色などから構成される。もっとも注意すべき点は
データ入力では通常の形式通りに保存するが、データ出力ではオブジェクトの種類別ではなく、t順に並び替えた配列で返す。
作成時の注意点として
子のtをチェックしないと出力で話の筋道が立たないので、チェックする。
子のidをチェックしないと他所のコマの子にできてしまうかもしれない。他人のコマを汚すことができるとマズいので、チェックする予定だったが、Railsが強制的にidを上書き(親のidに合わせる)するようなので、中止した。
出力時の注意点として
ソートするために前提を決める。
supply_default()
own?(roles)
真偽
自身の持ち主がロールリスト内に含まれるかどうかをTrue/Falseで返す
visible?(roles)
真偽
検査対象がコミックを閲覧できるかどうかを判定する
self.default_page_size
一覧取得時に返す件数のデフォルト値
self.max_page_size
ユーザは一覧取得時に返す件数を指定できるが、システムは上限値を設定できる
self.page prm = nil
一覧取得時に何ページ目を返すかの指定値を補正
self.page_size prm = self.default_page_size
一覧で取得する件数
list(page = 1, page_size = self.default_page_size)
mylist(author, page = 1, page_size = self.default_page_size)
自分のコマを公開非公開に関わらず取得する。
himlist(author, page = 1, page_size = self.default_page_size)
指定した作家の公開コマを取得する。
下記の関連テーブルを含む
panel_elements_as_jsonに吸収されている。
show(id, author)
edit(id, author)
下記の関連テーブルを含む
panel_elements_as_jsonに吸収されている。
parts_element
コマ部品として定義されているモデルを集合させて返す。
parts
コマ部品の集合をt順に並び替えて返す。
zorderd_elements
コマ部品の集合をz順に並び替えて返す。
panel_elements
コマ部品と同等機能。以前は背景とコマ絵は別の概念だったので、機能が分かれていたが背景も話の順番が加わったので、統合された。しかし、互換性を確保するため残してある。
self.elm_json_opt e
elements
コマのjson出力でコマ要素を埋め込むためのメソッド。jsonデータにはメソッド名で追加されるので、メソッド名は変えたくないトコロ。
panel_elements_as_json
通常のjson出力はto_jsonで処理できるが、コマはデータ構成が特殊なので、専用機能を用意した。 下記の関連テーブルを含む
self.list_as_json_text ary
通常、リストのjson出力はto_jsonで良しなに計らってくれるが、コマはデータ構成が特殊なので、専用機能を用意した。リストを(割と強引な)文字列操作でjsonテキスト化して返す。返るのはテキストなので、くれぐれも間違いなく。
scenario
コマに張り付けられたすべてのコマ要素の脚本を返す。
licensed_pictures
コマ要素の中からライセンス表示が必要なものを返す。
self.collect_element_value elements, name
コマ要素リストのリスト…ってややこしい。コマ絵リストとフキダシリストを合わせてリストにしたイメージ。コマには複数のコマ絵があるので、すべてのコマ要素を取り出すには二重のネストになる。
self.validate_t ary
シリアライズチェックとは、0から欠落重複なく収められていること。
self.validate_element_t elements, name
シリアライズチェックの準備を実施する。
self.validate_elements_t c
コマ部品は、tによって順序付けられる。各コマ部品を集合させてソートする場合、同じ値のtがあっては正しい順序が付けられない。よって、すべてのコマ部品のtが、0からの連番になるようにシリアライズされていることを検証する。
今のところtチェックの対象となるのはコマの子モデルの部品だけだが、将来的には孫部品に対しても実施することになるかもしれない(実際、過去にはフキダシのセリフにもtがあった)。idチェックとの対比をしやすいように(冗長ながらも)設定で変化させられる構成にしてある。
validate_t_list
孫部品などに対しても機械的にtチェックできるように設定をリスト化する。
各設定はHashで記述され、それらが配列で返る。Hashに定義するキーは、elements(チェック対象のオブジェクト集合)とname(検証するカラム名)。
validate_child
ここでは従属するデータの中でも単体で検証できない項目を検証する。
store attr, author
コマデータを保存するだけの機能である。だけ、といっても実際の処理は複雑で、複数のモデルに変更が及ぶ。よって、処理はトランザクションでロールバックできるようする。
コマの保存は、同時に従属するデータ(コマ絵・フキダシなど)を保存する。それらのデータは、カラム値に含まれるものとする。当処理は子モデルを含めた形をあるがままに保存しなければならない。つまり、コマの保存ですべての従属データも保存される。
それぞれの従属データは、保存時に各モデルで検証を受けるので、微細な検証は必要ないが、特殊な検証もあるので、外部機能でサポートしてもらう。部品の順序チェックは削除が実行されるまで処理できないとが判明したので、保存処理の後に移動した。
destroy_with_elements
真偽
配下の削除をしてから、自身を削除する。ただし、失敗したときはロールバックしてFalseを返す。
self.validate_id ary, pid
親子関係のモデルを保存するとき、正しい親子関係になっているかチェックしたい。
例として、コマ絵とフキダシはpanel_idによってコマとリンクしている。これを更新時にこっそり別のコマにリンクさせると、他人のコマにコマ絵を追加して改変できてしまう。そこでid一致チェックする。
以上をまとめると、
となる。
self.validate_element_id elements, name, parent_id
id一致チェックの準備を実施する。
self.validate_elements_id c
validate_id_list
孫部品などに対しても機械的にidチェックできるように設定をリスト化する。
各設定はHashで記述され、それらが配列で返る。Hashに定義するキーは、elements(チェック対象のオブジェクト集合)とname(検証するカラム名)とparent_id(チェック対象の親のid)。
[PageInfo]
LastUpdate: 2014-05-17 14:29:22, ModifiedBy: yasushiito
[Permissions]
view:all, edit:login users, delete/config:members