Rails で商品とカテゴリ
商品とカテゴリ
Ruby on Rails で販売しない EC サイトを作ってみた - div1に上がりたいkeitanxkeitanの日記 で作った EC サイトの改良。
商品ごとにカテゴリを設定して、カテゴリごとに商品を一覧できるようにしたい。
管理者がカテゴリを追加したり削除したりできるようにしたいので、カテゴリはモデルということになる。
今回は商品ごとにカテゴリを設定できるようにするところまで。
結論から書くとカテゴリと商品とを has_many, belongs_to 関係とで関連付けた。
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の第10章に詳しい。
手順
Product モデルは既にあるので、Category モデルを作る。
$ rails generate model Category name:string
Product モデルと Category モデルとを関連付けるためのマイグレーションを作成。
$ rails generate migration AddCategoryIdToProducts
category_id を追加。
class AddCategoryIdToProducts < ActiveRecord::Migration def self.up add_column :products, :category_id, :integer add_index :products, :category_id end def self.down remove_index :products, :column => :category_id remove_column :products, :category_id end end
マイグレート。
$ bundle exec rake db:migrate
あとは関連付けを行うだけ。
商品がカテゴリに所属する (belongs_to) 関連付け。
class Product < ActiveRecord::Base belongs_to :category . . . end
カテゴリが商品を複数所有する (has_many) 関連付け。
class Category < ActiveRecord::Base has_many :products . . . end
has_many, belongs_to による関連付けを RailsAdmin がよしなに扱ってくれる
RailsAdmin でいくつかカテゴリを追加してから、商品の編集画面を見てみると
となっていていい感じ。
ちなみに RailsAdmin の設定で編集画面をカスタマイズしている場合は
rails_admin do edit do . . . field :category # category_id ではないので注意! end end
と記述しておけば OK。
WeddingMessenger を Rails で実装して使いやすくしてみた
Heroku アプリとして
友人の結婚式に際して Twilio を使って祝電を集めてみた - div1に上がりたいkeitanxkeitanの日記 で Twilio を使って祝電を集めるアプリケーションを作ったことを書いたけれど、実装のスピードを重視して PHP で実装していた。
このままだとせっかく GitHub で公開していても使いにくいと思ったので、最近勉強した Ruby on Rails を使って実装して、Heroku にデプロイして使うような形で公開してみた。
keitanxkeitan/WeddingMessenger · GitHub
Twilio アカウントと Heroku アカウントがあればどなたでも簡単に使っていただけます。
導入手順は GitHub を参照のこと。
展望
- 管理画面では絞り込みなどできないので、AngularJS を使って実現してみたい
- ユーザーモデルを作ってウェブアプリケーション化してみたい
Rails + Heroku 楽しいなー!