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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1563閲覧

DBの初期値を使った代入方法は?

angelica-k

総合スコア14

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/08/21 02:23

###前提・実現したいこと
・【前提】
Ruby on Rails4を使って記事投稿システム(ブログのような)を開発しています。
DBはmysqlを使用しています。
このシステムでは、管理者と記事投稿者、記事編集者の権限が存在しています。

・【実現したいこと】
記事編集者は記事投稿者の記事を編集します。
編集を開始すると、ステータスが編集前から編集中に切り替わります。また、下書き保存も可能です。
今回実現したいのは、この編集中ステータスを編集前に差し戻すことです。

・【実装方法】
モデルにおいて、編集中ステータスを編集前に戻し、記事編集者の触ることが出来るカラムに
初期値を代入しています。
###発生している問題・エラーメッセージ
・【質問】
現在、カラムに対して初期値をべた書きしています。DBの初期値から代入するような方法、
または代替案はないでしょうか。

エラーは出ていません

###該当のソースコード

Ruby

1def status_rollback() 2 self.editor_id = 0 3 self.status = 0 4 self.title = nil 5 self.report = nil 6 save!

###試したこと
・グーグル先生に問い合わせていますが、質問のワードが悪いのか、答えらしいものには
たどり着けませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
ruby 2.2.0p0 (2014-12-25 revision 49005)
Rails 4.2.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

mysql であれば DEFAULT(col_name) という関数でデフォルト値を取得できます。

update [table_name] SET col_name = DEFAULT(col_name);

というsqlが発行できれば既定値で更新可能です。

投稿2017/08/21 02:39

Tak1016

総合スコア1408

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

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

angelica-k

2017/08/21 04:16

ご回答ありがとうございます。 ActiveRecord::Base.connection.update("update translations SET title = DEFAULT(title) WHERE id = "+ self.id.to_s + ";") とすることで、デフォルト値を代入することができました。 ただ、本番環境では成功するものの、Rspecを使用したテスト環境ではDBからデフォルト値を 取得できていないようです。(テストデータがデフォルト値とみなされている) もうしばらく他の回答者様を待ってみて、いらっしゃらないようであればベストアンサーとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問