どうも、エンジニアブロガーのウェブ系ウシジマくんです。Railsでwebアプリを作成する際、コーディングよりも実装するためのロジックの方が実は時間がかかります。今回はプログラミング学習サイトで有名なProgateで学んだことを中心に、自分でアプリを作る際に役立つんじゃないかなーと思ったロジック部分をまとめました。
このロジックをそのまま使ってもいいですし、組み合わせればよりユーザー目線に立ったアプリができそうですね。
この記事のターゲット
Progateやドットインストールなどで一通りRailsやRubyを学習した初心者の方。
特にRailsを學びはじめてまもない方にはこの記事を参考に、自分でもロジックをまとめていって欲しいなと思います。
そうすればより深いレベルでプログラミングを理解できると思いますしね。
投稿詳細ページで、どのユーザーが投稿を作成したかを表示する
=>各投稿者が「誰がその投稿をしたか」という情報を持っている必要があります。
- 実装の際には投稿を管理するカラム名(posts)とユーザーを識別する主キー(ユニークid:user_id)を紐付ければOK。
投稿したユーザーidを紐付ける
- 投稿のインスタンス変数(@post)をnewしてシンボルでユーザーのidを紐付けましょう。
投稿にユーザー名を表示させる
- ユーザー名やユーザー画像を表示するためには、user_idカラムの値から、そのユーザーの情報を取得させることが必要。編集する箇所はcontrollerでfind_byメソッドを使ってidを指定します。
ユーザーに紐付く複数のデータを取得する
- whereメソッドを使うことで、テーブルの中から指定した条件にマッチする複数のデータを取得できます。データは配列として格納されるので、取り出すときはインデックスを指定すればOK。SQLのwhereに相当しますので覚えておくと理解しやすいかと。
投稿者だけが投稿を編集できるようにする
- ユーザーは一意なはずなので、同じユーザーは存在しません。そのため、投稿者だけが投稿を編集できるようにするためには、投稿を作成したユーザーidとログインユーザーのidが等しいという条件式をif文で定義します。
- 投稿に紐づいているユーザーと現在ログインしているユーザーが異なるかどうかを比べるには、投稿を管理するテーブル(Postテーブルとする)に対してfind_byメソッドでユーザーidを検索してやればOK。
- find_byメソッドは検索して最初にマッチしたデータだけを返すので、これを利用してPostテーブルに登録されている一意のユーザーidと現在ログインしているidが合致すれば、railsは「同じユーザーだな」と認識できるし、違えば「同じユーザーではないんだな」と判断します。
最後に
プログラミングを上達させるポイントは、解説を読んでもわからないことがあった時に気軽に質問できる人を見つけることです。できれば、自分よりもレベルの高い人に聞くのが一番いいですね。「自分にはそんな人いないよ〜」という方には、こちらの記事で紹介しているプログラマカレッジを利用するのもアリだと思いますよ。
わからない時はわかる人にどんどん質問して、自分のレベルを最速で上げていきましょう!