This Project Has Not Released Any Files
記述例
model_name1: { table_name: 'model_names', associations: { belongs_to: { belongs_to_model_name: { id_column: 'author_id' }, }, has_many: { has_many_model_name: { foreign_key: 'scroll_id', model_name: 'scroll_panel', }, }, }, attributes: { id: { type: 'number', primary_key: 1, rules : { number: true, } }, title: { type: 'text', rules : { required: true, } }, }, }, model_name2: {
データベースで管理するすべてのアイテム(この場合、model_name1およびmodel_name2)に 対して、関連モデル、カラム、一覧を定義する。
アイテム名やモデル名を複数形にするための項目。名詞を単数形・複数形に変換する環境は用意されていないことが多いので、マニフェストに含めることにした。どうしてもないと困るので、必須項目とした。
このモデルのrelationshipに関して次の三種類をhashで設定する。省略したときは空のhashが補充される。
形式はname > valueである
所属するモデルについての設定
このアイテムが所属するモデル名を文字列で設定する。省略したときには所属名が補充される。
所属するモデルを参照するためのIDが入っているカラム名を文字列で設定する。省略したときは所属名に_idを追加した文字列が補充される。
次の例ではmodel_nameに'artist'が補充され、id_columnには'artist'+'_id'の'artist_id'が補充される。
belongs_to: { artist: { }, },
所持するモデルについての設定
アイテムが所持するモデル名を文字列で設定する。省略したときには所属名を単数形にしたものが補充される。
この活用するために、コントローラのマニフェストを利用することもある。 railsには複数形を単数形に戻す辞書が備わっているので問題ない。しかし、 JavaScriptなどではこれがないために、自前で変換しなければならない。手っ取り早い辞書はコントローラのマニフェストにあるので、これを利用して変換するのであるが、コントローラとモデルが必ずしも一致するわけではないので問題があるかもしれない。また、マニフェストの初期化順序によっては機能しないこともあるので、不安定要因の項目と言える。
外部キーを文字列で設定する。省略はできない。
中間モデルを経由して連結している場合にモデル名を文字列で設定する。直接連結している場合には設定する必要はない。
次の例ではscroll_panelsでscroll_panelモデルと連結させている。scroll_idカラムのIDが一致する条件で該当するデータを取得できる。
has_many: { scroll_panels: { foreign_key: 'scroll_id', model_name: 'scroll_panel', }, },
所持するモデルについての設定
連結するデータが単数であること以外、has_manyと同じである。
このモデルのカラムに関してhashで設定する。省略したときは空のhashが補充される。
形式はname > valueである。type項目があるが関係ない。今のところ型ごとに処理を変える必要がないからである。
カラムの型を文字列で指定する。省略はできない。どのような型があるかはデータベースによって変わってくるが、おおむね次のようなものである。
Primary keyフラグを数値で設定する。省略したときは0が補充される。
カラムの入力規則をhashで設定する。省略したときは空のhashが補充される。
この項目の値はjqueryのバリデータプラグインにそのまま渡される。
次の例では、数値型のIDカラムはテーブルのプライマリキーで、人力規則は数値であることを、設定している。
id: { type: 'number', primary_key: 1, rules : { number: true, } },
次の例では、文字列型のタイトルカラムは、入力規則に必須項目であることを設定している。
title: { type: 'text', rules : { required: true, } },
フィールドが選択ボックスの時、選択肢のアイテムを取得するためのソースををhashで設定する。省略したときは無視される。
データベースから取得する選択肢はマニフェストのselect_items['model']に収められており、システム定数から取得する選択肢はselect_items['magic_number']に収められている。ここで選択肢の取得先を決める。選択肢を読み込む処理はマニフェストを起動するときにselect_items_loaderで行われる。
形式はtype > argsである
ソースの一覧取得処理タイプを次の中から文字列で設定する。省略はできない。
選択肢のアイテムを取得するの処理に必要なオプションを与えるための設定。記述するべき内容はタイプによって違ってくる。
翻訳テキストがあるかどうかフラグを数値で設定する。
一覧はユーザー向けのキャプションとIDのペアで構成されているが、キャプション部分を翻訳ファイルのキーとみなしてローカライズに対応することもできる。
デフォルトでは定数から取得するとき1、データベースから取得するとき1とする。
source typeでmodelを選択したときに利用される。
マニフェストのselect_itemsで設定されている名称を文字列で設定する。省略はできない。
source typeでfilterを選択したときに利用される。
マスタデータではなく、ある条件によってフィルタされるリストを選択肢として利用したいときに使う。マスタデータではないので、システム起動時ではなく、随時SQLが発行され取得される。
例えば、原画にライセンスを割り当てる工程でライセンスを選択するケースがある。ここでは事前に選択されたライセンスグループのライセンスだけを選択肢としたいので、ライセンスグループIDでフィルタする必要がある。
この項目を利用するための条件として、同一モデルにフィルタ対象となるIDのカラムが存在しなければならない。先程の例で言えば、ライセンスグループIDが必要である。これは、フィルタの条件を取得するための糸口が見付からなかったためにこうなった。もっと良い引渡し方があるなら変更しても良い。
フィルタの条件にするIDのカラムの名称を文字列で設定する。省略はできない。
source typeでmodelをを選択したときに利用される。
マニフェストのselect_itemsで設定されている名称を文字列で設定する。省略はできない。
speech: { attributes: { writing_format_id: { type: 'number', source: { type: 'model', args: { select_item_name: 'writing_format_items', }, }, }, font_size: { type: 'float', source: { type: 'magic_number', args: { select_item_name: 'speech_font_size_items', }, }, }, },
writing_format_idの選択肢はモデルから取得されており、マニフェストのselect_items['model']['writing_format_items']にある。一方、font_sizeは定数から取得されており、マニフェストのselect_items['model']['speech_font_size_items']にある。
関連するモデルに名前をつけるための設定をhashで設定する。省略したときは空のhashが補充される。
形式はname > valueである
scroll_panel: { tree: { owner: 'scroll', scroll_owner: 'scroll', }, },
ここは割と厄介なので、詳し目に説明。
関連モデルはassociationsに現れるが、この情報は無機質なため、意味を持たせた関連を表すことができない。これは、パネルにぶら下がるモデルのうち、どれがエレメントなのかを追跡できないことを意味する。また、エレメントを作家別に抽出することもできないことになる。エレメントにはオーナーIDが設定されないので、エレメントルートまで関連を追跡できないので。
そこで、この設定で一連の関連モデルを名前でグループ化する。
基本的にはエレメントからルートを探すための情報なので、親(所属先)の方向しか進めないので注意すること。また、この設定を一覧取得のinclude句を生成するための情報として利用している。
リストの設定をhashで設定する。省略したときは空のhashが補充される。
形式はname > valueである
一回のリクエストで取得できる件数のデフォルト値を設定する。省略したときは25が設定される。
一回のリクエストで取得できる件数の最大値を設定する。省略したときは100が設定される。
[PageInfo]
LastUpdate: 2014-12-19 10:38:44, ModifiedBy: yasushiito
[Permissions]
view:all, edit:login users, delete/config:members