独自に定義したModelは、一定の基準を満たせばTimelineに表示することができます。その基準を満たしていない場合、タイムラインに表示することはできません。

このセクションでは、実際にカスタムModelをタイムラインに表示しているhttps://github.com/toshia/rss[RSSプラグイン]を参考にして、その方法を解説します。

以下のコードは、RSSプラグインのhttps://github.com/toshia/rss/blob/master/model/item.rb[Itemクラス]です。

class Item < Retriever::Model
  include Retriever::Model::MessageMixin

  register :rss, name: "RSS Topic"

  field.string :guid
  field.string :link
  field.string :title, required: true
  field.string :description
  field.time   :created
  field.has    :site, Plugin::RSS::Site, required: true

  def to_show
    @to_show ||= self[:title].gsub(/&(gt|lt|quot|amp);/){|m| {'gt' => '>', 'lt' => '<', 'quot' => '"', 'amp' => '&'}[$1] }.freeze
  end

  def user
    site
  end
end

MessageMixin

タイムライン、すなわちGUIにModelを表示するには、多くのメソッドを提供しなければいけません。

それらのメソッドはたいてい固定値を返していれば良いため、そういったメソッドをほとんどすべて実装したRetriever::Model::MessageMixinをincludeし、そこから必要なメソッドをオーバライドしていきます。

実装すべきメソッド・フィールド

MessageMixinは、大抵の必要なメソッドを実装してくれますが、一部のメソッドについては、モジュールを利用するクラスが提供しなければなりません。具体的には以下のメソッドです。

description

説明

本文です。ツイートでいうところの、ツイートの本文にあたります。

戻り値

  • String 本文

user

説明

ユーザです。ユーザ名、ユーザアイコンなどを表示するために使われます。

戻り値

created

説明

投稿が行われた時刻です。Twitterでは、ツイートの投稿日時です。

戻り値

  • Time 投稿日時

タイムラインに表示したいなら、registerも忘れずに呼ぶ

ツイートのように、直接タイムラインに表示されるModelは、定義の中で`register`メソッドを呼んでおきましょう。

class Item < Retriever::Model
  include Retriever::Model::MessageMixin

  register :rss, name: "RSS Topic"
end

registerメソッドの詳しい情報はメタ情報の記事を参照してください。