Rails
【Rails】find, updateを備えたフォームオブジェクト
· ☕ 8 åˆ†ã§èª­ã‚ã¾ã™
はじめに 前提として、同様のことはaccepts_nested_attributes_forを使えばできます。これはPOROっぽく実装したい人

【Awesome Nested Set】レコードの位置を動かすメソッドまとめ
· ☕ 1 åˆ†ã§èª­ã‚ã¾ã™
Awesome Nested Setはツリー構造を表すことのできるgemの1つです。 インスタンスメソッドのまとめは下記ページにまとまっています。 Awesome nested set cheat sheet まとめ ちなみ

【Rails】#class_name を実行するためには pry-doc をインストールする必要がある
· ☕ 1 åˆ†ã§èª­ã‚ã¾ã™
本番環境では以下のようなエラーが出ました。 NoMethodError (undefined method `class_name' for #<Class:0x000000000c6fc208>) Did you mean? class_eval ローカルでは実行できたので、検証してみました。 1 2 3 4 5 6 7 8 9 [1] pry(main)> user = User.first User Load

【RSpec】たまに使うちょっとトリッキーなマッチャ
· ☕ 1 åˆ†ã§èª­ã‚ã¾ã™
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # subjectがArrayクラスであることを検証する it { is_expected.to be_kind_of Array } # 全要素がHashであることを検証する it {

【Rails】countのN+1問題を解消する
· ☕ 4 åˆ†ã§èª­ã‚ã¾ã™
前提 関連付け:users -< products 1 2 3 4 5 class UsersController < ApplicationController def index @users = User.all end end 1 2 3 4 <% @users.each do |user| %> <%= user.display_name %> (<%= user.products.count %>) <% end %> この場合、user.products.cou

【Rails × Tailwind】Tailwindだけで画像スライダー
· ☕ 1 åˆ†ã§èª­ã‚ã¾ã™
こういうのです。 参考元はTailwind carousel component - examples &amp; templates できるだけ生CSSを書かずにTailwindで実装しました。 前提 Imageモデルのnam

【Rails × Turbo】TurboStreamを使って非同期処理でお気に入りボタン
· ☕ 3 åˆ†ã§èª­ã‚ã¾ã™
はじめに 「お気に入り機能」といえば、js.erbファイルを作成してAjaxで切り替える実装が多いのですが、今回はTurboStreamでお気

【Rails】自前で匿名認証を実装する
· ☕ 3 åˆ†ã§èª­ã‚ã¾ã™
Railsチュートリアルのremember meの永続化Cookieの実装を参考にする。 「匿名認証」とは ここでは、 ユーザー登録・ログイン不要 ブ

【Rails】ルーティングのカスタムparamとform_withの自動生成URLを両立する
· ☕ 2 åˆ†ã§èª­ã‚ã¾ã™
環境 Ruby 3.0.2 Rails 6.1.4 前提 ルーティングでURLの動的な値に好きなカラム(今回はuuid)を指定する。 これによって、/articles/1などの単純な連

【Rails × Turbo】renderを出力するJS scriptをViewに書く
· ☕ 3 åˆ†ã§èª­ã‚ã¾ã™
概要 renderの中身をJSで増やす / 削除するようなJSをviewに直接書きました。 このやり方が調べても出てこなかったので、実装の一例として

【Rails】APIのルーティングのresourcesとmodule(具体例)
· ☕ 1 åˆ†ã§èª­ã‚ã¾ã™
Hashlogのエンドポイントを作るときにルーティング迷子になったので、単純に自分がやったものをまとめておく。 アソシエーション User -< Tags -< Tweets のよ

【Rails】fields_forで外部アカウント登録フォーム
· ☕ 5 åˆ†ã§èª­ã‚ã¾ã™
環境 Rails 6.1.3.2 Tailwind 2.2.4 実装するもの こんな感じのフォームです。 アイデアはQiitaから拝借しました。 アソシエーションと各カラムの値 アソシエーション User -< SocialAccount

【Rails】Sorceryの外部認証でコールバックURLを動的に変える
· ☕ 4 åˆ†ã§èª­ã‚ã¾ã™
SorceryのコールバックURLは基本的にconfigファイルで変更するのですが、コントローラから動的に変えたいときはどうすればいいのかわ

【Rails】ネストされたattributes_paramsをフォームからコントローラに渡す
· ☕ 5 åˆ†ã§èª­ã‚ã¾ã™
はじめに フォームからネストされた値を渡し、ストロングパラメータとして取得するだけのサンプルコードです。 バージョン Ruby3.0.0 Rails 6.1.3 アソシエーション Product -< Medium

【Rails】database.ymlって何?
· ☕ 3 åˆ†ã§èª­ã‚ã¾ã™
はじめに RUNTEQ内でチーム開発をしているのですが、みんな大好き環境構築は最初の難関でございます。 特にデータベースでハマったことがない人は

【Rails】複数レコードを一括操作するルーティング
· ☕ 1 åˆ†ã§èª­ã‚ã¾ã™
post has_many commentsのアソシエーション。 postに紐づくcommentを全て削除するとき、理想ならこんな感じのエンドポイントにしたい↓ DELETE /posts/:post_id/comments が

【Rails】index_byとgroup_byを用いて取り回しのきくハッシュを作成する
· ☕ 5 åˆ†ã§èª­ã‚ã¾ã™
要件の例 Question -< Answer >- User question has_many answers user has_many answers 問題があらかじめ用意されていて、ユーザーはそれぞれ問題に解答する(1問につき1解答)。 このとき、以下のようなペ