yhara.jp

Recent Posts

ブログを作る(4)

2016-09-03
Tech

そういえば日付の扱いについてちゃんと考えてなかったが、思ったより複雑っぽい。

  • 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」みたいな名前にできないかなと思ったけど、別に何かを行った時刻というわけじゃないからね。

More posts

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author