Rails 4 でカスタムバリデータを作成する方法です。以下のページを参考にしています。 Custom Validators in Ruby on Rails 4 - Rails 4 recipes and know-how for developers 1. app ディレクトリ内に validators というディレクトリを作成します
![Rails 4 でバリデータを自作する(custom validator) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/486ebbe844cdf44664fe5861ae2fcc8e6bca3f47/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UmFpbHMlMjA0JTIwJUUzJTgxJUE3JUUzJTgzJTkwJUUzJTgzJUFBJUUzJTgzJTg3JUUzJTgzJUJDJUUzJTgyJUJGJUUzJTgyJTkyJUU4JTg3JUFBJUU0JUJEJTlDJUUzJTgxJTk5JUUzJTgyJThCJTI4Y3VzdG9tJTIwdmFsaWRhdG9yJTI5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz04MTAzMzgxYzUyOWJkZTY3YWFiNzYwYzQxNzdiOTg2NA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbm90YWthb3MmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWY5NTQ2ZGQ1YWM0OGNlM2Q0NzBmZDAwMzVhZjcxODA3%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dde357a95cdcb3a85914448d7ee615bd6)
オブジェクトがDBに保存される前に、そのデータが正しいかどうかを検証する仕組みをバリデーションといいますが、 RailsでActiveRecordを使ってそれを実現するにあたってよく使いそうなのをまとめます。 以下のメソッドにおいてはバリデーションがトリガされます。 create create! save save! update update! 以下のメソッドにおいてはバリデーションはスキップされます。 decrement! decrement_counter increment! increment_counter toggle! touch update_all update_attribute update_column update_columns update_counters Railsでのバリデーショントリガ Railsではvalid?メソッドを実行するとバリデーションが実
Ruby on Rails 7.1.3.4 Module ActiveRecord::Transactions::ClassMethods activerecord/lib/active_record/transactions.rb Active Record Transactions Transactions are protective blocks where SQL statements are only permanent if they can all succeed as one atomic action. The classic example is a transfer between two accounts where you can only have a deposit if the withdrawal succeeded and vice versa. Tr
begin ActiveRecord::Base.transaction do . . raise 'ロールバックします' end p 'コミット' # トランザクション処理を確定 rescue => e p 'ロールバック' # トランザクション処理を戻す end transactionブロックの中で登録・更新処理を行う場合は、saveやupdateではなく、save!, update!を使用する。 transactionブロックの中で複数のモデルの更新を行った後に例外を発生させると、全部のモデルがロールバックする。 楽観的ロック 「競合は多分起きないだろう」という前提で、データの取得時には何もせず、更新時に競合をチェックする方法。 レコードのバージョン管理を行うため、テーブルにlock_versionカラムを追加する。その際、デフォルト値を0にする。 lock_versionはレコード
あるテーブルに対して複数のレコードを同時に登録したいことがあります。 このときに登録する数だけINSERTを発行するのはあまり効率がよくありません。 そこでBULK INSERTと言われる単発のSQLで一括登録する方法がよく使われます。 BULK INSERTとは 単純なbooksというテーブルを使い、BULK INSERTはどういうものか確認する。 CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAU
既存プロダクトにあらたな機能を付け加えようとcontroller内をいじっているとき「ん?updateアクションのときはupdate_attributesだけどそのほかだとsaveになってるぞ、何か違いあんのか?」とふと思って、ちょこっと調べたのでメモ程度に残しておくことにしました。 レファレンスによると”生成したモデルオブジェクトをデータベースに保存する”と記されている。参考URL -> Railsドキュメント ピンとこないがまあオブジェクトを呼び出してそこに何かを代入して保存のようなときにsaveを使えってことかな。 つまりモデル名.オブジェクト名 =とやってから保存するときにsaveを使うってことと勝手に理解しました笑 レファレンスによると”データベースから取得したオブジェクトを更新”と記されている。参考URL -> Railsドキュメント こっちはなんとなくイメージ湧きます。つまり
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く