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

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

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

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

Q&A

解決済

1回答

1263閲覧

【Ruby on Rails】条件が絡む初期値設定をすることは可能でしょうか?

pecchan

総合スコア555

Ruby on Rails

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

0グッド

0クリップ

投稿2017/12/06 08:49

編集2017/12/06 11:12

Ruby on Rails初心者になります。

モデルの初期値設定についてお伺いします。

以下のようにモデルに初期値を設定できますが、

ruby

1t.integer :hoge, default: 8

「条件」が絡む設定のときは、Ruby on Railsでは通常どうするのが一般的でしょうか?

Privateメソッドか何かにするでしょうか?

例えば、データ新規作成時
Aカラムの値を見てBカラムの初期値を設定したいのです。

ruby

1if Aカラム > 100 2 Bカラム = 'たくさん' 3else 4 Bカラム = '少ない' 5end

宜しくお願い致します。

【2017/12/6 補足追加】
設定される側のBカラムは、あくまで初期値です。
画面からBカラムの編集も行います。

新規登録時は、Aカラムは必須入力です。
それに伴いBカラムも初期値がセットされ、
編集時に、Bカラムを変更できればと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

それはどちらかと言えば、初期値というより、コールバックでセットする値なのではないかと思います。

あと、手動設定の必要ない、常に「Aカラム」の値に依存する値であれば、それはカラムを作るのでなく、インスタンスメソッドやscopeで対応した方がいいものだと思います。

もう少し具体的に落とさないと、適切な手段は決まりません。

投稿2017/12/06 10:06

maisumakun

総合スコア145183

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

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

pecchan

2017/12/06 11:08

有難う御座います。 情報不足ですね。申し訳ございませんでした。 質問に補足追加させていただきます。
pecchan

2017/12/06 11:18

「コールバック」について今調べてます。 これでいけそうな気がしております。 条件の箇所を単純化してますが、実際は「created_at」を使って条件分岐させたかったのです。 なので after_createか、after_saveか、after_commit あたりを使ってみようと思います。
pecchan

2017/12/07 00:27

教えていただいたコールバックの中から after_commitを使って実現できました。 class Hoge < ApplicationRecord after_commit :set_columnB def set_columnB @value = 'てすと' self.update_column(:columnB, @value) end end 有難う御座いました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問