Rails
Railsで検索を実装するとき、どのように実装しますか? ransack などのGemを使っていますか? 今回は、Gemを使わずにFinderオブジェクトを使って検索を実装してみます。 Finderオブジェクトを使うと、モデルとコントローラーから検索のロジックを切り離すこ…
HPでもWebサービスでもお問い合わせフォームは必須な機能だと思います。 今回はお問い合わせフォームからのお問い合わせ内容をGitHubのissueにする方法を紹介します。 事前準備 Gemをインストールする Gemfile gem 'octokit' GitHubでアクセストークンを作成…
DBに保存するほどでもないマスターデータをどのように管理するか悩んだことはありませんか? 今回は、そんな時に便利かも!?な ActiveHash を使ってモデルライクにマスターデータを管理します。 github.com 事前準備 Gemをインストールする Gemfile gem 'ac…
Railsで多言語化する時、yamlファイルに日本語訳や英語訳を追加していくと思います。 そのyamlファイルに追加した訳文で式展開ができることをご存知ですか? 事前準備 config/application.rb に以下の設定を追加します。 config.i18n.default_locale = :ja c…
アクセスしたURLによってlocaleを切り替える機能を意外と実装したことがなかったので、今回は3つの方法でlocaleを切り替えてみたいと思います。 事前準備 複数の言語を使用できるように設定する config/application.rb に以下の設定を追加します。 config.i1…
今回はよく使う・知っていると便利なmigrateコマンドを紹介します! マイグレートする rails db:migrate 特定の環境のみマイグレートする 開発環境の場合(デフォルトなので明示的に指定することはあまりないと思います) rails db:migrate RAILS_ENV=develo…
Railsで日本語化をするとき、「あれどうやるんだっけ」と意外と忘れてしまうこともあると思います。 今回はそんな日本語化の話をしたいと思います! 事前準備 config/application.rb に以下の設定を追加します。 config.i18n.default_locale = :ja config.i1…
ユーザーの権限を管理する際などに、enumを使うことがあると思います。 今回はenumの使い方をまとめてみます。 下準備 1. Gemをインストールする 日本語対応のためのGemです。 gem "enum_help" 2. モデルを作る $ rails g model user 202401001000000_users.…
以前Rails7でTailwind CSSの導入をしましたが、今回はBootstrapを導入してみます。 esbuildを使用します。 プロジェクト作成時に導入する場合 1. rails new mofmof -j esbuild --css bootstrap でプロジェクトを作成する 2. 以下を package.json に追加する …
Stripe決済第四弾です。 今回はいままで実装したサブスクの解約を実装します。 サブスクの実装は以下の記事を参考にしてみてください。 www.mof-mof.co.jp 実装 ルーティングを追加します。 config/routes.rb resources :cancel, only: [:create] viewsに追…
Stripe決済第三弾です。 今回は前々回実装したサブスクと、前回実装した買い切りを組み合わせて複数のプランをユーザーが選択できるようにしてみます。 下準備は以下の記事を参考にしてみてください。 www.mof-mof.co.jp 決済を実装する 今回用意するプラン …
Stripe決済第二弾です。 今回は前回サブスクで実装したプレミアムプランを買い切りで実装してみます。 下準備は前回の記事を参考にしてみてください。 www.mof-mof.co.jp 決済を実装する 料金を作成する こちら で料金を作成します。 前回作成したプレミアム…
近年、サブスクのサービスが増えましたね。 今回はユーザーの上位プランをサブスクで決済できるようにしたいと思います。 プレミアム会員を月額100円で実装してみます! 下準備 Gemをインストールします。 Gemfile gem "stripe" Stripeのアカウントを作成し…
Dockerの公式が出しているRubyのdocker imageではdebianやapline linuxが使用されています。mofmofではHerokuで本番環境を作っているアプリも多いのですが、HerokuではUbuntuが使われています。 そのため、ローカルで使用しているdockerでもUbuntuを使ってHe…
Hotwireを使ってみる第三弾です! 今回はJSを使わずに、Hotwireで無限スクロールを実装してみます。 下準備 1. Gemをインストールする gem "kaminari" 2. モデルを作る $ rails g model post 20240813000000_posts.rb class CreatePosts < ActiveRecord::Mig…
Hotwireを使ってみる第二弾です! 今回は、検索結果をHotwireで表示するようにしてみます。 画面の全てを再描画する必要がないので、速度が上がるかもしれませんね! 下準備 1. モデルを作る $ rails g model post 20240813000000_posts.rb class CreatePost…
Rails6までは「もっと見る」などの動的な機能を実装する場合はJSが必須でした。 しかし、Rails7から標準搭載されたHotwire(Turbo)を使用すると、JSを使わずに「もっと見る」を実装することができます。 今回はHotwireを使った「もっと見る」の実装方法を紹…
deviseを使わない自前のユーザー認証 の続きで、今回はパスワードリセット機能を実装します。 下準備 1. カラムを追加します $ rails g migration add_password_reset_to_users 20240726000000_add_password_reset_to_users.rb class CreateUsers < ActiveRe…
deviseを使ったユーザー認証はとても便利ですが、カスタマイズをしたいときや、APIモードで使う時には不便なことがあります。 そこで今回は、deviseを使わない自前のユーザー認証を実装します。 下準備 1. Gemfileに使用するGemを追加します (Gemfileの中で…
バリデーションでエラーになった際に、エラーメッセージを各テキストフィールド等の下部に表示したい時があると思います。 今回はそんな時に便利な各attributeごとにエラーメッセージを抜き出す方法を紹介します。 手順 例えば User の email のエラーは以下…
「ここのページだけReact使いたいんだよな〜」とか「ページのここの部分にReact入れ込みたいんだよな〜」ということはありませんか? 今回はそんなあなたにReactを部分的に使用する方法を紹介します。 こちらの記事を応用していきます。↓ www.mof-mof.co.jp …
このviewsだけにこのJSを読み込みたい・・・! という時があると思います。 今回はそんな時のためにJSファイルを個別に読み込む方法を紹介します。 (esbuildを使用している前提で進めていきます) 手順 1. package.json に記載されているビルドスクリプトの…
Rails7のアプリでJSのビルドツールはesbuildを使用します。 環境構築の方法はこちらを参照ください↓↓ www.mof-mof.co.jp ReactとTypeScriptをインストールする 1. 以下のコマンドで必要なパッケージをインストール yarn add typescript react react-dom reac…
Railsプロジェクトを新規作成する機会は多くないため意外とオプションって忘れがちだと思います。 rails new コマンドのオプションなんだったっけかな〜という時のために よく使うオプション、知ってると便利なオプションをまとめてみました。 DB編 使用する…
Rails7以前で Tailwind CSS を使用したい場合はWebpackerを使って yarn add tailwindcss して ほげほげファイルを追加して〜〜としていたと思います。 Rails7からはWebpackerが標準ではなくなったので、導入方法が変わりました。 プロジェクト作成時に導入す…
以前、Rails7 + PostgreSQLの環境構築をしました。 www.mof-mof.co.jp www.mof-mof.co.jp 今回は、MySQLを使ったRails7の環境構築をしてみます。 本記事ではビルドにimportmapを使用した場合の環境構築を行なっていきます。 esbuildを使用する場合は こちら…
Rails7がリリースされてから、環境構築で躓いた経験がある方は少なくないのではないでしょうか。 今回は、Rails7 + PostgreSQL + esbuild の環境を docker-compose で構築していきたいと思います。 Rails7 + PostgreSQL + importmap の環境構築については以…
Rails7がリリースされてから、環境構築で躓いた経験がある方は少なくないのではないでしょうか。 今回は、Rails7 + PostgreSQL + importmap の環境を docker-compose で構築していきたいと思います。 Rails7 + PostgreSQL + esbuild の環境構築については以…
graphqlでエラーを返す方法はいくつかあり、それぞれメリデメありますが、Unionで返すのが好みです。 例えば、以下のようにmutationで実行時のバリデーションエラーを共通のフォーマットで返すことを考えてみました。 mutation createPost($input: CreatePos…
mofmofでは新規サービスをゼロから開発することが多くあります。 その際にshwldがどのように技術選定をしているのかを書いてみます。 こちらの記事がとても参考になる内容で、私なりにも書いてみようと思いこの記事を書いています。 https://zenn.dev/moga/a…