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)が良いでしょう。

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 でない値を返すなら、その値を返します。