これは2つの質問です。
ニュース記事の作成など、ユーザー入力を受け入れるRoR(3.0.7)アプリケーションがあります。これまでのところ、ユーザーは信頼されているため、ユーザー入力はプレーンXHTMLでした。ただし、XHTMLでWebサイトに投稿を作成するのは一部のユーザーにとって難しいため、テキスタイルへの移行を試みます。
テキスタイルを使用するために、RedClothをインストールしました。
既存のニュース記事をテキスタイルに変換することはありません。これは、データを統一するための正しい方法であると私は知っています。そのため、特定の日付以降にのみコンテンツにRedClothを使用する予定です。
ビューでは、created_atの日付をチェックし、出力する前にRedClothを呼び出すという条件があります。ただし、それは、すべてのビューを繰り返し処理し、その特定のコンテンツを提示するたびに条件を挿入する必要があることを意味します。複製する必要のあるコードを最小限に抑えるヘルパーを作成することもできます。
それを実行してDRYを維持する代わりに、ロジックをモデルに移動することにしました。モデルには、articlecontentという列があります。私が思いついたのは以下のコードで、これまでのところうまくいくようです。
def articlecontent
if !self.new_record? && created_at.to_datetime > 'YYYY.MM.DD'.to_datetime
articlecontent_in_textile = self[:articlecontent]
articlecontent_in_html = RedCloth.new(articlecontent_in_textile, [:filter_html]).to_html
return articlecontent_in_html
else
return self[:articlecontent]
end
end
だから私の質問は:
1)これは正しい方法ですか?または、ある種のViewHelperを定義する必要がありますか?
2)おそらく正当な理由で、モデルのサニタイズヘルパーを呼び出すことができないようです。モデルでヘルパーを呼び出す方法はありますか?
ありがとうマーク