Railsにはタイムスタンプカラム( created_at / updated_at )があり、各カラムは データ作成時 created_at と updated_at が設定される データ更新時 updated_at が更新される という挙動になります。 2.2 スキーマのルール | Active Record の基礎 - Railsガイド そんな中、「同じ値でデータ更新をした場合、 updated_at は更新されない」と同僚より教わったため、メモを残します。 目次 環境 Rails consoleで動作確認 データ作成時 同じ値でデータ更新 別の値でデータ更新 同じ値で更新したときも、updated_atを更新したい場合 同じ値でデータ更新 別の値でデータ更新 参考:Djangoの auto_now_add と auto_now の場合 環境 Rails 7.0.4 なお、今回使うモ
rails_build_method.md Railsモデルの関連付けで、buildを使うときのメソッド名 モデル間の関連付けの際に、データを保存したくない場合はbuildを使うが、 関連付けのパターンによって、メソッド名が変わるので、メモをしておく 1 対 1 の場合 モデル定義 class Car < ActiveRecord::Base has_one :engine end class Engine < ActiveRecord::Base belongs_to :car end buildによる関連付け メソッド名: build_関連付けメソッド名 使用例: @car.build_engine(name: "エンジン1") 1 対 N の場合 モデル定義 class Car < ActiveRecord::Base has_many :wheels end class Wheel
1:N な関係でN個の中で最新のレコードだけ欲しい、っていうケースで has_manyなrelationのfirstを取得していくとN+1になりまくってつらいので has_oneで取得できるようにしてeager_loadする方法を調査したメモ 環境 OS: Ubuntu 20.04 Ruby: 3.0.2 Rails: 6.1.4.1 RDB: Postgres 13 薄いプロジェクトを作る FROM ruby:3.0.2-alpine3.12 as ruby ## Development FROM ruby AS dev ENV BUNDLE_FORCE_RUBY_PLATFORM=1 \ CFLAGS="-Wno-cast-function-type" RUN apk update \ && apk add --no-cache \ gcc \ g++ \ libc-dev \ lin
uniqueness: scopeを利用して一意性検証をする方法について解説します。 目次 動作環境 実装例 解説 複数のscope データベース側の制約 おわりに 動作環境 OS : macOS Mojave 10.14.6 ruby : 2.6.3p62 rails : 5.2.4 実装例 class Label < ApplicationRecord has_many :labelings, dependent: :destroy belongs_to :user, optional: true validates :name, presence: true, uniqueness: { scope: :user } end ユーザはタスクに紐付けるラベルを作成することができますが、各ユーザは同じ名前のラベルを作れないようにラベルモデルのnameカラムに一意性制約をつけています。 実
Railsでアプリ開発中にバリデーションをかけようと思い、 一意性制約(テーブル内で重複するデータを禁止する)の記述について、ネットで調べていると、 unique:true uniqueness: true上の2つで出てきて、どっち!?違いはなに!?ってなったんで調べてみました。 まず前提として一意性制約には以下の2パターンのやり方があるという事。 ①アプリケーション側に設定➔モデルに記述(uniquness:true) ②DB側に設定➔マイグレーションファイルに記述(unique:true) まず①についてはこんな書き方 class User < ApplicationRecord validates :name, uniqueness: true end user.rb 続いて②についてはこんな感じ class AddEmailToUsers < ActiveRecord::Migra
状況 userとroomを紐付けるpermissionsテーブル(部屋に入れる許可証を管理)を作成したい references型でuser, taskをカラムにもつ 既にテーブルに存在する(user_id, task_id)のセットが入力された際、保存しない制約 このバリデーションが正常に動作するかをコンソールで確認したい 「一意性制約」を使えば実現できるこちらのバリデーション。 今回はこれがちゃんと実装できているか、rails cで立ち上げたコンソールでの操作についての記録です。 環境 macOS Catalina 10.15.6 ruby 2.6.5 Rails 6.0.3.4 MySQL : 5.6.47 今回のコード class Permission < ApplicationRecord belongs_to :user belongs_to :task validates :u
こんにちはgengenです。 初めに言ってしまうと、Ruby2.7の始端無しRange(beginless range)がActiveRecordのwhereに渡せるので日付検索が全部Rangeできて便利というだけの記事です。 ActiveRecordのwhereにはRangeが渡せる 「ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法」で詳しく紹介されてますが、そもそもwhereのハッシュ引数の値にRangeオブジェクトが渡せて、BETWEENと不等号を使い分けて上手いことクエリを作ってくれます。 User.where(activated_on: Date.new(2022,1,1)..Date.new(2022,12,31)).to_sql => "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"activate
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く