第3回に入る前に、改めて仕様を整理しました。実はこの時まで何をつくるか悩んでいたのですが、色々と考えた末にQ&Aサイトをつくることにしました。仕様の整理については「パーフェクト Ruby On Rails」を参考にしました。
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る
主な仕様
- ユーザはメールアドレス・Facebookアカウントで登録・ログインできる
- 全ユーザは質問を閲覧できる
- 質問は作成日時で降順に表示
- 10件毎にページ送り
- 質問タイトル・質問本文を対象にキーワード検索できる
- ログインユーザは質問を作成できる
- 質問タイトル(任意)
- 質問本文(必須)
- ユーザは自分が作成した質問を削除できる
- ログインユーザは質問に回答できる
- 回答本文(必須)
- ログインユーザは退会できる
- 退会したユーザの情報は削除される
- 退会したユーザの質問はそのまま残る
- 質問を作成したユーザが退会している場合、作成したユーザの情報として「退会したユーザです」と表示する
- 質問に回答したユーザが退会している場合、回答したユーザの情報として「退会したユーザです」と表示する
仕様はつくりながら調整していく予定です。
質問を投稿する
第3回では質問を投稿する機能をつくります。モデルの定義や全体の構成については、Q&Aサイトのオープンソースプロジェクトを参考にしました。
今回はscaffoldを使ってテンプレートを作成します。
$ rails g scaffold question user:references title:string content:text
生成されたマイグレーションファイルのcontentの項目にnull: falseを追加して実行します。
$ rake db:migrate
モデルとコントローラをそれぞれ修正します。
- Userモデルに追加
has_many :questions
- questions_controller.rbを修正
def new @question = current_user.questions.build end def create @question = current_user.questions.build(question_params) (省略) end
今後バリデーションなどの処理は必要ですが、ログインユーザが質問を投稿できるようにりました。