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

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

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

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

Q&A

解決済

1回答

1704閲覧

rails4 トランザクション処理

smith

総合スコア73

Ruby on Rails

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

0グッド

0クリップ

投稿2015/02/02 09:08

トランザクション処理を実装のためupdate_attributeをupdate_attributes!に変えたところwrong number of arguments (2 for 1)というエラーになるのはなぜでしょうか
※update_attributeであればトランザクション以外の動作を正常に行います。update_attributesだと同じエラーが出ます。

lang

1 begin 2 tag.transaction do 3 @opportued_tag.updates!('user_id', @opportuer_tag_user) 4 @opportuer_tag.updates!('user_id', @opportued_tag_user) 5 6 ............ 7 8 end

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

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

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

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

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

guest

回答1

0

ベストアンサー

このコードが何を意味しているのかはわかりませんが (updates!というメソッド?

エラーには引数が1つを期待しているのに、2つ渡してしまっていると怒られています
udpate_attribute と update_attributes はsの有無で単数と複数を表しています

update_attribute に対応するのは update_attribute!なのでsを抜いてください


追記

すみません、動作確認しておりませんでした
riで引くと、attribute!は存在していないです

update_attributeは、成功失敗をbooleanで返してくれるので

raise 'error' if update_attribute

で、一応の対処はできるかと思いますが
そもそも、update_attributeはvalidationかからないので、所望の動作をしないと思います

ので

update_attributes!({user_id: @opportuer_tag_user})

のように、attributes!の方を使用するのが良いと思われます
attributesには、hashで値を渡せばOKです

投稿2015/02/02 12:17

unhappychoice

総合スコア1531

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

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

smith

2015/02/02 21:28

update_attribute!に変えたところundefined method `update_attribute!' forとなりました。 update!でもwrong number of arguments (2 for 1)となります。 !をつけるとエラーになrますね・・・
unhappychoice

2015/02/02 21:47

すみません、動作確認しておりませんでした riで引くと、確かにattribute!は存在していないですね! update_attributeは、成功失敗をbooleanで返してくれるので ``` raise 'error' if update_attribute ``` で、一応の対処はできるかと思いますが そもそも、update_attributeはvalidationかからないので、所望の動作をしないと思います ので ``` update_attributes!({user_id: @opportuer_tag_user}) ``` のように、attributes!の方を使用するのが良いと思われます
unhappychoice

2015/02/02 21:48

回答の方↑のコメントで編集をしておきました
smith

2015/02/03 02:19

hashで渡せば一つで渡せますね ありがとう御座います。なぜか閃かない。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問