ライセンス @ LicenseSpec

カラム

name和名typedefaultnulllimitnote
license_group_idライセンスグループintegerFALSE ライセンスグループid
name管理名string FALSE50ライセンス管理名
caption名前string FALSE30ライセンス名
urlURLstring FALSE 条項ページURL
system_picture_idマークintegerFALSE マーク画像id
settings拡張データstring 拡張データ
credit_picturesクレジット内画像string システム画像のリンク jsonデータ
created_at作成datetime
updated_at更新datetime

作成手順

ライセンスグループにまとめて作ってもらう。

  • 重複管理のためにnameで検索して、あれば更新、なければ新規作成。
  • マーク画像をidで指定できない場合はBase64エンコードテキストを使う。

検証

カラム別

license_group_id

  • nullでないこと。
  • 数値であること
  • 存在するライセンスグループであること。

name

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

caption

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

url

  • 200文字以内であること。
  • 重複していないこと。
  • URL形式であること。

system_picture_id

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

settings

credit_pictures

機能

ペタナイズでカバーできない機能について記す。

caption_with_group

更新

self.store(name, attr)

パラメータ

  • name:ライセンス名
  • attr:カラム値

解説

  • システム画像置換を依頼して、カラム値のシステム画像データをidに変えてもらう。
  • credit_picturesがカラム形式なので、json文字列に変換しておく。
  • インポート処理のデータ更新準備に依頼してオブジェクトをもらう。
    • ライセンス名とカラム値を渡す。
  • システム画像置換の結果判定
    • Falseのとき
      • 全体エラーメッセージを「システム画像作成失敗」とする。
    • False以外のとき(置換すべきデータがない場合Nilを返す)
      • オブジェクトを保存する。
  • オブジェクトを返す。

複数の更新

self.stores(attrs, lg_id)

パラメータ

  • attrs:カラム値のHash列挙
  • lg_id:ライセンスグループid

解説

事実上のインポート。ライセンスはライセンスグループが作成するからインポートという名前は避けておく。

ライセンスグループをインポートしたとき、子モデルであるライセンスも同時にデータが与えられるはず(ない場合もある)。ライセンスも同時にインポートしたいトコロだが、ライセンスグループをidで関連付ける機能はぺったんImporterにはないので自前で実装したのがこれ。当然ながらファイルは既にライセンスグループによって読み込まれていてHash展開されている。

なお、子モデルのエラー結果まで表示しきれるとは考えていないので、エラー数だけカウントして返す。

  • attrsを全件処理する。
    • attrにライセンスグループidを埋め込む。
    • 名前とカラム値を使ってライセンスの更新を依頼する。
    • 更新が失敗したら件数をカウントする。
  • 失敗件数を返す。
  • 例外ケース
    • attrsがnilなどのHashでないケースでは、処理にかけず0を返す。

エクスポート

export dt = nil

パラメータ

  • dt:開始日時

戻り

開始日時以降のライセンス

解説

  • 開始日時以降に更新されたライセンスを返す。
  • 他のモデルは含まない。
  • 開始日時が省略された場合はすべてのライセンスを返す。