yhara.jp

Recent Posts

ブログを作る(12) カテゴリ機能を付けた

2017-05-16
Tech

記事にカテゴリを付けられるようにした。前からやりたかったものの一つである。ソースはこのへんだけど、ファイル構成の見直しも同時にやったのでこれだけ見てもよく分からないな。

同カテゴリの記事を探しやすくするというのが第一の目的だけど、もう一つの変更点として、日記(カテゴリDiary)を省いたAtomフィードを追加で提供するようにした。これを期にもうちょっと雑多な内容も書くようになるかもしれない。ならないかもしれないけど。

やったこと

  • Categoryモデルを作成。各Postは0..1個のCategoryに属する。
  • 編集画面にCategory選択フォームを追加。
  • カテゴリ自体のCRUDは/_configを新設してそこでやるようにした。Twitterに書いたけど、disabled="disabled"を付けることで削除ボタンの誤操作を回避している。コスパがよい(実装コストが低くて効果が大きい)ので好きなハック。
  • あとは/_listをカテゴリでフィルタできるようにした。

既存の記事にカテゴリを振る

ここは半手作業でやった。DBを手元にダウンロードして、rake consoleでirbを立ち上げる。以下のようにすると適当な形式のテキストファイルができるので、エディタで開いてカテゴリがTechじゃないやつを編集する。

> require 'pp'
> File.write("cats.txt", Post.all.map{|post| [post.id, "Tech", post.title]}.pretty_inspect)

終わったら以下のようにするとカテゴリが設定される。

> ary = eval(File.read("cats.txt"))
> ary.each{|id, cat_name, _| cat = Category.find_or_create_by!(name: cat_name); Post.find(id).update!(category: cat)}

More posts

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author