質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2992閲覧

Rails4のモデルで特定の条件のレコードのみ保存する

k.hagiwara

総合スコア13

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/03/04 01:59

いつもお世話になっております。
RailsでDBにデータを保存する際に条件に一致するレコードのみを保存する方法などありますでしょうか?

例えば、nameがnilだったら保存しないなどです。
バリデーションのようにエラーは出さすに、保存せずスキップさせたいです。

具体的には、Viewに複数のチェックボックスがあるのですが、それを1:Nのテーブルに格納したいです。
Post 1 - N User

PostのViewにUserが複数選択できるチェックボックスがある感じです。
チェックが入っていればUserのidを
チェックが入っていなければnilを返すようにしました。

そこでnilのレコードは保存せずにバリデーションエラーも出したくないという感じです。

恐れ入りますが、ご教授いただければ幸いです。

環境
Rails 4.2.5
Ruby 2.2.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

モデルにバリデーションを設定した上で create! ではなく create, save! ではなく save メソッドを利用すれば
エラーにはならず作成もされないという挙動になります。

hoge.rb

1class Hoge < ActiveRecord::Base 2 validates :not_null_column, presence: true 3end

ruby

1# 保存されないがインスタンスは生成される。 2hoge = Hoge.create(no_null_column: nil) 3hoge.persisted? # DBに保存されているか確認するメソッド 4# => false 5 6# 保存されず、save メソッドの戻り値には false が返る 7hoge = Hoge.new(no_null_column: nil) 8hoge.save 9# => false 10hoge.persisted? 11# => false

投稿2016/03/04 03:17

編集2016/03/04 03:25
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問