おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

Rails

【Ruby on Rails】子の作成時に親のupdated_atを更新したり更新しなかったりする方法

こんちには。opiyoです。 railsでデータをsaveしたりupdateしたりするとupdated_atが更新されるけど、親データのupdated_atを更新したり、更新しないようにするにはどうすればいいの!? こんな悩みを解決していきたいと思います。 結論から言ってしまうと …

【Ruby on Rails】時分秒を操るにはTime#changeメソッド

こんにちは。opiyoです。 今回はRailsを使った時分秒を操り方をの紹介です。 ある一定の時間内のデータを取得したい! 時分秒だけじゃなくて年月日はできるの? 「1ヶ月」 = 「月初 ~ 月末」ってのはよく使うから知っているのですが、「時間」 = 「12時00分0…

【Rails】JSONデータを返却する「gem jbuilder」の便利な使い方

こんにちは。opiyoです。 今回はJSONデータを作る際に便利な「gem jbuilder」についてです。 RailsはAPIに徹する事が世の中的に多くなってきてると思うので、JSONに接する機会は多いと思います。 そんな時に便利なjbuilderの使い方について、実際のプログラ…

Dockerを使って「Rails / PostgreSQL」の開発環境を作ろう!

Dockerを使ってRuby on Railsの開発環境を作成する方法の紹介です。 こちら公式の手順になるのですが、Rubyのバージョンが2.5だったので今回2.6でチャレンジしてみます。 docs.docker.com 基本は公式通りで問題ないですが、2.6でrails newするとRails6系がイ…

【Rails】Vue.js入門してみた。(rails new ~ hello?)

Ruby on Rails + Vue.jsで最初の画面「Hello Vue!」が表示されるまでの方法を紹介します。 実行環境 Ruby: 2.6.3 Rails: 6.0.0 yarn: 1.19.1 vue: 3.12.0 rails newまで 先ずはrails単体で「Hello World」が表示されるまでです。 $ mkdir vue-app $ cd vue-a…

【Rails】enumをさらに便利にしてくれるgem enumerize(日本語化も)

Ruby on RailsでEnum = 列挙型を使う時に色々と便利なGemenumerizeの紹介です。 enumは例えば、ユーザーの性別とか、ステータスとか複数の項目を持つデータを扱う際に使います。 Railsだけでもenumを扱うことは出来るのですが、enumerizeを使うと簡単に日本…

【Rails】開発中に送ったメールを確認する(Gem: letter_opener)

Ruby on Railsで開発中に送ったメールを確認する Gem letter_opener_webの紹介です。 環境設定 Gemfileにletter_opener_webを追加する。 # Gemfile group :development do gem 'letter_opener_web' end 開発環境モードの設定ファイルにメール送信の設定をし…

【Rails】不用な値の更新を防ぐ「Strong Parameters」について

Ruby on RailsのStrong Parametersについての紹介です。 ユーザー登録やお問い合わせなど、ユーザーがフォームに入力したデータのみ登録・更新できるようにするための機能です。 webの場合は開発者ツールなどを使って存在しないformを自由に作ったり出来てし…

【Rails】パンくずリストを作るbreadcrumbs_on_railsを使って構造化データ対応する

Ruby on Railsで「パンくずリスト」を簡単に実現してくれるGembreadcrumbs_on_railsを使って「構造化データ」を実現する方法を紹介します。 構造化データとは!? 構造化データとはGoogle公式の情報の記載を引用します。 Google 検索では、ページのコンテン…

【Rails】パンくずリストを簡単に作る Gem breadcrumbs_on_rails

Ruby on Railsで「パンくずリスト」を生成するGembreadcrumbs_on_railsの紹介です。 導入方法 Gemfileにbreadcrumbs_on_railsを追加してbundle installします。 # Gemfile gem 'breadcrumbs_on_rails' パンくずリストを登録する(Controller) パンくずリス…

【Rails】PostgreSQLをローカル環境(Mac)にインストールする

Ruby on Railsでよく使われるPostgreSQLをローカル(Mac)環境にインストールする方法です。 PostgreSQLのインストール $ brew install postgresql PostgreSQLのバージョンチェック $ psql --version psql (PostgreSQL) 9.6.2 PostgreSQLサーバの起動 $ post…

【Rails】ActiveRecordじゃなくて生のSQLを実行する方法(find_by_sql)

Ruby on Railsで生のSQLを実行する方法です。 ちょっと複雑なデータを取得したい時に、Active Recordだと逆に面倒だったりして生のSQLを描きたい場合があります。 その場合はfind_by_sqlを使います。 基本的な使い方 使い方はシンプルでModel.find_by_sql(sq…

【Rails保存版】Active Recordで作ったオブジェクトを保存しよう!(save/update)

Ruby on Railsでデータベースを操作するのに使うActive Record。 今回は、saveやupdateを使って実現するオブジェクトの保存方法紹介します。 今回利用するテーブル情報はこちらです。 基本的な使い方 保存する役割を果たすメソッドは以下の通りいっぱいあり…

【Rails】Active Recordで作ったオブジェクトを削除しよう!(destroy/delete)

Ruby on Railsでデータベースを操作するのに使うActive Record。 今回は、destroyやdeleteを使って実現するオブジェクトの削除方法紹介します。 今回利用するテーブル情報はこちらです。 今回使うテーブルのER図 基本的なこと オブジェクトを削除するメソッ…

【Rails】Active Recordでオブジェクトを作ろう!(new/build)

Ruby on Railsでデータベースを操作するのに使うActive Record。 今回は、newやbuildを使って実現するオブジェクトの作り方を紹介します。 基本的なこと newやbuildは基本的に出来ることは一緒です。 厳密には違うのかもしれませんが、「new build 違い」で…

【Rails】オブジェクトを作成したり検索したり更新したり保存したり

Ruby on Railsではデータベースとの様々なやりとりをActice Recordという仕組みを使って行いますが、よく使われる方法をざっとご紹介です。 今回利用するテーブル情報はこちらです。 Table "public.hoges" Column | Type | Collation | Nullable | Default -…

【Rails】モデルの変更前後の値や変更されたのかをチェックする

Ruby on Railsで保存や変更した時の値を取得したり、値が変更されたのかどうかをチェックする方法を紹介します。 変更のチェック(changed?) モデル全体で変更があるかどうかをチェックするにはchanged?を使います。 > hoge = Hoge.last Hoge Load (0.3ms) …

【Rails】英語を日本語化! Gem i18n

Ruby on Railsで英語を簡単に日本語表示してくれるGem「i18n」の紹介です。 事前準備 Railsアプリ全体の言語設定を日本語に変更します。 # config/application.rb config.i18n.default_locale = :ja Gemfileにrails-i18nを設定してbundle installします。 # …

【Rails】簡単にformが作成できるsimple_form

Ruby on Railsで登録機能や更新機能を作る際に必要なform。 このformの作成を簡単に作成することが出来る便利なライブラリ「simple_form gem」のご紹介。 simple_formで作った問い合わせform画面のイメージ インストール手順 Gemfileに追加して、bundle inst…

【Rails】バリデーションをまとめてみる

データを登録する際に利用するフォームですが、条件に応じて必須だったり制限したりする仕組みを「バリデーション」といいます。 Ruby on Railsでは以下のような感じで設定することができます。 class Hoge < ApplicationRecord validates :name, presence: …

【Rails】調整さんのようなカレンダーを表示する

調整さんのようなカレンダーを作ると表示する内容が固定されていればtableタグなどで出来るが、 DBに保存された内容だとどうhtmlを組めば分からない。 調整さんってご存知ですか? 調整さん - 簡単スケジュール調整、出欠管理ツール ちょっとした打合せとか…

【Rails】DBに保存する前のデータを削除する方法は`delete`

オブジェクトをnewしたけど、条件に応じて内容が空になることがわかった。 この状態でsaveしちゃうとvalidationに引っかかるしオブジェクトを削除したい。 が、DB保存前なのでActiveRecordで削除する感じでdeleteはできないしどうすれば... そんな疑問に今日…

【Rails】enumerizeで定義したフォームのセレクトタグをアクション別に変える

今日やりたかったのは、新規作成時と編集時で同一カラムなんだけどセレクトタグに表示する内容を変えたいってのがあった。 編集の場合は色々な条件があって変更されると困るってのがあったので、悩んでたんだけど結構簡単に出来たのでその方法を紹介します。…

【Rails】営業日を考量して日付を操るGem business_time

回答期限に応じて何かを処理するって時に営業日を考慮したい時があり色々調べているとスンバラシイですね。 business_timeっていうgemがあったので簡単な使い方を紹介します! 導入方法 使い方 日付の操作 営業日チェック 注意点 Timezoneはきちんと設定しま…

【Rails】データが1件でもあるかどうかチェックするには`Model.exists?`

Ruby on Railsでデータベースにデータが存在するかどうかチェックしたい場合があると思います。 そもそもデータがあるかどうか知りたい時 ログインしたユーザーが管理者ユーザーがどうかをチェックしたい そんな時はModel.exists?()を使いましょうって話です…

rake db:migrationがどこまで実行されてるのか確認したり戻したり

あるデータベースのカラムを追加したくと色々やっていたら、今どんな状況なのか良く分からなくなったので整理する。 migration実行状況確認 $ rake db:migrate:status Running via Spring preloader in process 1796 database: hogehoge Status Migration ID…

Gemfile通りにherokuが'bundle install'してくれない!

何が起こってるのか herokuではどうやら、 sqlite3は使えないそうなので本番とローカル環境でDBを切り分けるようGemfileを更新しました。 # Gemfile source 'https://rubygems.org' gem 'rails', '~> 5.0.0', '>= 5.0.0.1' gem 'pg' gem 'puma', '~> 3.0' ge…

TwitterやFacebookなどのSNSボタンを5分で追加する

Railsアプリを作る時、SNSのシェアボタンを設置するにはどうすれば良いのでしょうか? Rails social-share-button gemのイメージ画像 今回たまたまsocial-share-buttonというgemを見つけたので、それを使ってみました。 https://github.com/huacnlee/social-…

css上で動的に値の変更はできないけどhtmlに書けばできる

cssに設定する値を動的に変更するとかできないのか?なんて思ったことないでしょうか? 例えば、 ユーザー毎にボタンの色や背景色などを変更したい! 条件に応じてbackgroundに画像を入れたり、差し替えたりしたい! 結論から言うとできます! ただcssでは出…

ActiveJobを使った非同期処理の方法

Ruby on Railsを使って非同期で処理する方法 ActiveJobについてです。 ざっくり手順 generateでjobファイルを作成する jobをキューに登録する jobを実行する generateでjobファイルを作成する コマンドで $ bundle exec rails g job hoge_job 手作業で jobs/…