Basis Model
Diva::Modelに実装されているので、それを継承した全てのクラスがBasisであると云えます。 これらのメソッドはオーバライドして適切な値を返すようにしましょう。
他の種類のModelについては、Diva::Modelを参照してください。
概要
例えばアクティビティの関連Modelのリストのように、どのようなModelでも受け付ける可能性があって、それをユーザに対して列挙して選択させたいといった場合、そのModelを説明するのテキストを表示したいことがあります。
こういった、「どんなModelにも必ずあったほうがいい振る舞い」「どんなModelにも必ず用意できそうな振る舞い」をBasisと呼んでいます。
フィールド
title
field.string :title, required: true
このインスタンスのタイトルです。複数行である可能性があります。
description と同じ値を返すこともできますが、より短いテキストを返すことを期待されています。明確な制限はありませんが、リストビューに列挙されてユーザが大まかな意味を理解できるテキストにします。
記事であれば記事のタイトル、ユーザであれば名前が良いでしょう。
description
field.string :description, required: true
このインスタンスを説明する詳細なテキストです。複数行である可能性があります。
title より詳細な説明なので、複数行の長文が許されており、リストビューに一覧するには不向きです。
記事であれば記事の本文、ユーザであればプロフィールの文章(bio)が良いでしょう。
perma_link
field.uri :permalink, required: false
このインスタンスに対応するWeb上のリソースのURLです。Webブラウザのアドレスバーに入力して、意味のあるページにアクセスできるURLである必要があります。そのようなURLが存在しない場合は、このフィールドは nil
を返します。
Twitterのツイートであれば、そのツイートのURL、Twitterのユーザであれば、ユーザのページのURLです。オーバライドされなかった場合は、 nil
を返すようになっています。
uri
field.uri :uri, required: true
このインスタンスを一意に特定するための文字列です。URI形式で表現され、デフォルトでは適当な値を返すようになっています。
例えば、 Plugin::Foo::Bar
というModelを定義した場合、デフォルトでは以下のようなURIを返します。
plugin://bar.foo/[UUID]
UUIDの部分には、uriフィールドを読んだときに SecureRandom.uuid
を一度呼び出し、二度目以降はその値が利用されます。
このデフォルト値はDivaやmikutterなどのバージョンによって変わる可能性があります。 必ず一定の値を得たい場合は、uriメソッドなどをオーバーライドしましょう。
オーバーライドしなくても、perma_linkメソッドが nil
でない値を返すなら、その値を返します。