ブログを作る(4)
そういえば日付の扱いについてちゃんと考えてなかったが、思ったより複雑っぽい。
- post.date
- ユーザが入力する
- 記事のURLに含まれる
- post.published_at
- 記事が最初に一般公開状態になったときに設定し、変更はしない
- フィードのpublished欄に使用
- post.updated_at
- (ActiveRecordによって)自動的に設定される
- フィードのupdated欄に使用
だいたいこんな感じでいいかな?あとは、同じ日に2個以上の記事を書いたときに、どのようにソートするかという問題があるなぁ。 たとえばパート1、パート2みたいに同じテーマの記事を2個書いたとしたら、後者の方が新しいものとして表示されてほしいよな。
まあ普通に作ればそうなると思うんだけど、ある日に記事を一個書いたあと、「これより前に記事を差し込みたい」みたいなケースがあるだろうか? あんまりないと思うけど、順序を制御できないのも気持ち悪いんだよな。どうしようかな。
あー、post.dateじゃなくて、post.datetimeみたいにするという手があるか。URLにはdate部分しか含まれないけど、time部分をいじることで表示順序が制御できるという。これだと順序制御のためにカラムを増やさなくて済むので良いね。 あとは名前かな?post.datetimeだと何に使うものなのかが不明確だから、もうちょっと考えたほうが良さそう。
post.datetimeは基本的にpost.published_atと同じ日付になるんだけど、そうでないケースとしては例えば「書いてるうちに9月3日になってしまったけど、気持ち的には9月2日の記事にしたい」みたいなことを想定している。あとは、日付を9999年1月1日にして強制的に最初に表示させるとか。
ということを考えると、post.datetimeは「気分的な日付」あるいは「表示上の日付」と言うことができそう。だとしたらどういう名前がいいかなぁ。前言を翻して何だけど、post.datetimeでいい気がしてきた。postはそれぞれ固有のdatetimeを持つ、ということで。ActiveRecordなので「xxx_at」みたいな名前にできないかなと思ったけど、別に何かを行った時刻というわけじゃないからね。