Rails

コメントの turbo frame 化: 小林研 Rails Tips (85)

RailsTips 第85回では、コメントの追加・編集・削除の部分をTurboFrame化し、ページ遷移なしで更新できるようにする方法を紹介しています。また、FlashメッセージをTurboFrameで扱うための工夫についても述べています。TurboFrameは一箇所しか更新できないた…

ユーザ周りの修正: 小林研 Rails Tips (84)

RailsTipsの84回目では、ユーザー関連のいくつかの不具合を修正しました。ログインしていないときに新しい記事を作成できないようにし、ログインリンクを追加しました。また、ユーザーの名前が空であった問題も解決しました。コメントの追加もログインしてい…

コメントにユーザを追加(コントローラの修正): 小林研 Rails Tips (83)

Rails Tips の 83 回目では、ユーザーをコメントに追加する方法を学びました。モデルにユーザーを追加した後、request spec を修正し、コントローラが正しく動作するように変更します。ビューも同様に修正し、特に articles/comments/_form.html.haml と art…

コメントにユーザを追加: 小林研 Rails Tips (82)

RailsTipsの82回目は、コメントにもユーザーを追加する方法を説明しています。記事と同様、コメントにもuser_idを追加しますが、コメントのuser_idにはnullが許可されている点が異なります。これはユーザーが削除された時に、ユーザーなしのコメントを残すこ…

記事のビュー更新 (ユーザ権限): 小林研 Rails Tips (81)

Rails Tipsの81回目では、所有しないオブジェクトに対する編集や削除のリンクを発生させない方法を紹介しました。記事の執筆者を列に追加し、editとdestroyのリンクの前にowned_by?で権限を確認することがポイントです。また、ユーザ関係の処理を記事に適用…

所有しないオブジェクトの処理(テストを追加): 小林研 Rails Tips (80)

RailsTips 80回目では、所有権を確認するテストおよび実装を行いました。所有しないオブジェクトに対するeditの対応が済み、updateやdestroyも対応が完了しています。テストで対応が済んでいることを確認しました。明日はこれに合わせてindexなどの描画を修…

所有しないオブジェクトの処理: 小林研 Rails Tips (79)

Rails Tipsの79回目では、所有しないオブジェクトに対する編集の対応を行いました。所有しないオブジェクトに対するアクセスを防ぐため、記事の所有者を確認するメソッドを追加しました。これにより、所有権がない場合にはトップページにリダイレクトします…

記事モデルのテスト追加: 小林研 Rails Tips (78)

Rails Tipsの78回目では、記事が特定のユーザーの所有物かどうかを確認するメソッドowned_by?と、記事を書いたユーザーの名前を取得するメソッドuser_nameの実装とそのテストについて解説しています。owned_by?メソッドはユーザーIDの比較、user_nameメソッ…

ログインのテスト: 小林研 Rails Tips (77)

Rails Tips の 77 回目では、ユーザがログインした状態でのテストを行います。ログイン状態では Devise::Test::IntegrationHelpers を spec/rails_helper.rb に追加し、ログインするためのメソッドを作成します。記事の閲覧はログインしていなくても可能です…

記事にユーザを追加: 小林研 Rails Tips (76)

RailsTipsの76回目では、Railsアプリケーションにユーザー認証を追加する方法を説明しています。Deviseを用いてローカル認証の作成を行い、その結果としてユーザー登録が可能になりました。続いて、記事にユーザーID属性を追加し、ログインしたユーザーだけ…

ローカル devise 認証の作成: 小林研 Rails Tips (75)

RailsTipsの75回目では、OAuth2の認証の挑戦が失敗したため、一度ローカルの認証に焦点を当てています。git revertを使用して前日の作業を取り消し、deviseでローカルログインを実装します。また、i18nバージョンも追加しています。deviseのインストール後、…

OAuth2 認証の実装: 小林研 Rails Tips (74)

Rails Tips の 74 回目では、Google の OAuth 認証の導入について解説しています。まず、Google Cloud でプロジェクトを作成し、OAuth 同意画面から OAuth 2.0 クライアント ID を作成します。その情報を Rails の credentials に登録後、認証関連の gem を…

Visible module の実装: 小林研 Rails Tips (73)

Rails Tipsの73回目では、Visible moduleの導入と実装が行われました。記事とコメントの両方でテストされたarchived?メソッドは、statusがarchivedであるときにtrueを返します。このメソッドはVisible moduleにMix-inされ、テストも通過しました。また、requ…

値限定制約 shared example: 小林研 Rails Tips (72)

RailsTipsの72回目では、status属性に値限定制約を設定しました。この属性はpublic, private, archivedのみ設定可能で、これをテストするための値限定制約というshared exampleを作成しました。また、ArticleとCommentのmodelにそれぞれ存在制約と値限定制約…

status 属性を追加する: 小林研 Rails Tips (71)

RailsTipsの71回目では、「concernを使う」について学びます。まず、記事とコメントの両方にステータス属性を追加するためのマイグレーションファイルを作成します。ステータスにはpublic、private、archivedしか入れることができませんが、そのテストは次回…

コメント削除のテストと実装を記述する: 小林研 Rails Tips (70)

このRailsTipsの70回目では、コメント削除機能のテストと実装を記述します。まずはコメントを表示している部分テンプレートに削除リンクを追加し、その後に新規フォームが表示されないようにします。次にテストを記述し、最後に削除処理を記述します。これで…

コメント編集のテストと実装を記述する: 小林研 Rails Tips (69)

RailsTipsの69回目では、コメントの編集機能のテストと実装について記述されています。記事では、部分テンプレートの変更、新規コメントの設定、新規用フォームと更新用フォームの表示制御、テストの記述、実装の詳細について説明されています。また、次回は…

コメント追加のテストと実装を記述する: 小林研 Rails Tips (68)

RailsTipsの68回目では、コメントの追加機能のテストと実装を行いました。記事では、テストケースの作成とその結果に基づく実装を詳しく説明しています。具体的には、submitボタンを押したときに動作するcreateアクションのテストを行い、その結果を基に art…

パーシャルのフォームをレンダリングする: 小林研 Rails Tips (67)

RailsTips 67では、コメントのエラーに対する対応を改善するための方法を説明しています。Railsガイドのコードを改良し、formの部分を部分テンプレートにしました。また、エラーが発生したオブジェクトが捨てられないように、新規オブジェクトを作る代わりに…

コメントへのルーティングを追加する: 小林研 Rails Tips (65)

RailsTipsの65回目では、Comment モデルに対するルーティング設定を行いました。Rails ガイドに従い、コメントを追加するコントローラのためのルーティングを追加しました。ただし、ガイドではフラットなコントローラを使っていますが、ルーティングだけでな…

第2のモデルのテストを追加する: 小林研 Rails Tips (64)

Rails Tips 第64回目では、Comment モデルのテストについて記載します。まず属性に関するテストを実施し、それぞれの属性に対して存在制約を追加します。また、関連性の確認と親モデルの削除時に子モデルも削除されることを確認するテストを記述します。最後…

第2のモデルを追加する: 小林研 Rails Tips (63)

第63回の RailsTips では、第二のモデルである Comment モデルの追加について説明されています。新たに作成された Comment モデルは、Article モデルへの参照を保持します。また、commenter と body には null: false を追加しています。さらに、手動で記述…

Turbo 環境の構築: 小林研 Rails Tips (62)

Rails Tips の 62 回目は、TurboとImportmapの環境構築について説明しています。インストール時にbundleをスキップしたため、JavaScriptなどの設定もスキップされていたとのこと。そのため、まずはimportmapをインストールした後、application.html.hamlにja…

記事を削除する: 小林研 Rails Tips (61)

Rails Tips の 61 回目では記事の削除機能の実装を中心に解説しています。記事の削除に必要な destroy メソッドの設定、テストの作成、そして destroy の実装について詳しく説明があります。また、記事の一覧表示ページに削除のリンクを追加する方法も紹介さ…

記事を更新する: 小林研 Rails Tips (60)

RailsTipsの60回目では、記事を更新するeditとupdateを実装します。まず、テストを記述し、正しいパラメータと不正なパラメータの両方でupdateを検証します。次に、共通の処理をbefore_actionでまとめ、showとeditの実装を省略します。最後に、updateの実装…

記事を1件作成する(続き): 小林研 Rails Tips (59)

RailsTipsの第59回目では、createアクションの実装とテストについて解説します。記事の作成のためのパラメータを受け取り、その結果を新しい記事として保存するcreateアクションの作成を行います。成功時には作成された記事のページにリダイレクトし、失敗時…

記事を1件作成する: 小林研 Rails Tips (58)

RailsTipsの第58回では、新しい記事を作成するための新規作成ページを実装します。まず、新しい記事のオブジェクトを作成し、その後、そのオブジェクトを描画します。そのために、翻訳文字列を追加し、フォームの作成を行います。また、以前紹介した form_la…

記事を1件表示する: 小林研 Rails Tips (57)

RailsTipsの57回目では、記事の一覧表示に続き、記事を1件表示する部分のテストと実装について説明しています。具体的には、showアクションを作成し、コントローラで取得した@articleをビューで描画する方法について説明しています。また、記事一覧に各記事…

記事のリストを表示する: 小林研 Rails Tips (56)

RailsTipsの56回目では、記事のリストを表示する部分の実装が行われました。まず、テストを修正し、「記事一覧」、「タイトル」が描画されていることを確認しました。次に、app/controllers/articles_controller.rbで@articlesを取得し、app/views/articles/…

モデルの属性テスト: 小林研 Rails Tips (55)

RailsTipsの55回目では、モデルの属性に関するテストを行いました。articles_spec.rbを修正し、titleとbodyが空のときにバリデーションに引っかかることを確認しました。また、article.rbに存在制約と文字数制約を追加し、テストが通ることを確認しました。…