カスタムModelをタイムラインに表示する
Table of Contents
独自に定義した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し、そこから必要なメソッドをオーバライドしていきます。
実装すべきメソッド・フィールド
タイムラインに表示したいなら、registerも忘れずに呼ぶ
ツイートのように、直接タイムラインに表示されるModelは、定義の中で`register`メソッドを呼んでおきましょう。
class Item < Retriever::Model
include Retriever::Model::MessageMixin
register :rss, name: "RSS Topic"
end
registerメソッドの詳しい情報はメタ情報の記事を参照してください。