問題タブ [after-save]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
372 参照

ruby-on-rails - Railsのafter_saveコールバックで配列から削除されたIDを特定しますか?

保存後のコールバックで配列の何が変更されたかを確認する方法を理解しようとしています。これが私が使用しているコードの例です:

依存する破棄機能をuser_mapsで機能させることができなかったため、after_saveコールバックを使用してサブユーザーを削除しています。誰かがこれを行う方法について何かアイデアがありますか?

ありがとう!

0 投票する
1 に答える
241 参照

ruby-on-rails - Rails - 子アソシエーションでアクティブなフラグを反転しようとしています

フォーラムとトピックの 2 つのモデルがあります。フォーラムには多くのトピックがあります。それぞれにアクティブなブール値があります。フォーラムでアクティブ フラグを反転すると、そのトピックのすべてのフラグも反転されます。私の考えは、self.active でない限り、before_save def before_save でこれを行うことでしたか? self.topics.each{|トピック| topic.close} 終了

トピックでは、close メソッドを定義しました: def close self.active = false self.save end

ここで間違ったアプローチをとっているのでしょうか (コントローラーのように他の場所でやるべきでしょうか?) エラーは発生しませんが、フラグを false に設定しても何も起こりません (すべてを反転させたいとは限りません)。フォーラムをアクティブに設定するとトピックがアクティブになるので、これは一方向に進むだけで済みます)。

ありがとう

0 投票する
3 に答える
7181 参照

ruby-on-rails - rspec テスト has_many :through および after_save

私は(私が思うに)has_many :through結合テーブルとの比較的単純な関係を持っています:

そして、これらの rspec テスト (これらは必ずしも良いテストではないことはわかっています。何が起こっているかを説明するためのものです):

これは、を参照するモデルに を追加するまで問題なく動作after_saveします。つまり、もしそうならThingfollowers

その後、2 番目のテストは失敗します。つまり、関係は引き続き結合テーブルに追加され@thing.followersますが、空の配列が返されます。さらに、コールバックのその部分が呼び出されることはありません (あたかもfollowersモデル内で空であるかのように)。puts "HI"行の前にコールバックにa を追加するとfollowers.each、「HI」が標準出力に表示されるので、コールバックが呼び出されていることがわかります。行をコメントアウトするとfollowers.each、テストは再びパスします。

これをすべてコンソールから行うと、正常に動作します。つまり、できる

これがrspecで失敗するのはなぜですか? 私はひどく間違ったことをしていますか?

アップデート

手動で次のように定義すると、すべてが機能Thing#followersします

これは、おそらく私が my has_many :throughwith を:source間違って定義していると信じるように導きますか?

アップデート

最小限のサンプル プロジェクトを作成し、github に配置しました: https://github.com/dantswain/RspecHasMany

別のアップデート

@PeterNixey と @kikuchiyo の以下の提案に感謝します。最終的な答えは両方の答えの組み合わせであることが判明したので、それらの間でクレジットを分割できたらいいのにと思います。最もクリーンなソリューションと思われるもので github プロジェクトを更新し、変更をプッシュしました: https://github.com/dantswain/RspecHasMany

誰かがここで何が起こっているのかについて本当にしっかりした説明をしてくれるなら、私はまだそれが大好きです. 私にとって最も厄介な点は、最初の問題ステートメントで、への参照をコメントアウトした場合にすべて (コールバック自体の操作を除く) が機能する理由ですfollowers

0 投票する
2 に答える
929 参照

ruby-on-rails - Rails 3: after_save で挿入をキャンセルする

レコードが挿入されたときに Web サービスを呼び出す必要があるモデルがあります。

Web サービスが失敗した場合 (タイムアウトまたはその他の障害)、データベースへの保存も元に戻す必要があります。

after_save コールバックを使用して、この種のエラーが発生したときに ActiveRecord::Rollback を発生させようとしました。

object.save で false を返しますが、トランザクションをロールバックしません。これを行う適切な方法は何ですか?

レコードが作成されないようにするにはどうすればよいですか?

0 投票する
2 に答える
191 参照

ruby-on-rails - Rails 3 - model.save 後に他のモデルの属性を変更する

残念ながら、私はまだ Rails の初心者すぎるので、さまざまなアプローチを考えて試してみましたが、思うように動作せず、もう一度助けを求める必要があります。

私は REST コメント投票メカニズムを持っており、コメントごとに親指を上げたり下げたりしています。これは正常に機能し、それぞれがcounter_cacheで処理されます。ここで、これらの賛成票と反対票に基づいて、各コメントのプラスマイナス値、thumbs_up-votes - thumbs_down-votes を計算します。それを処理するのが最も効率的な方法かどうかはわかりませんが、プラスマイナス値をコメント モデルの追加の整数属性として持つことを計画しています (親指の上下は独自のモデルです)。したがって、私が基本的に望んでいるのは、thumbs_up が保存されると、コメントの plusminus attr が自動的に になり+= 1、それぞれ thumbs_down.save になることですa -= 1

このようなアクションは、thumbs_up コントローラー内からどのように発行できますか? form_for を変更する必要がありますか、それとも私のアプローチは完全に間違っていますか?

別のモデルの属性を処理するための after_save コールバックはありますか?

0 投票する
3 に答える
2594 参照

ruby-on-rails - after_save_filter で CSV を生成するときの未定義のメソッド 'column_names'

ユーザーがアカウントを作成した後に CSV ファイルを生成したいので、モデルでafter_saveフィルターを作成しましUserたが、エラーが発生します。

これが私のコードです:

しかし、ユーザーが作成されるとエラーが発生します:

なぜ私はこれを得ているのですか?私はこのレールキャストを使用しています - http://railscasts.com/episodes/362-exporting-csv-and-excel

0 投票する
1 に答える
795 参照

ruby-on-rails - CSVファイルを保存するパスを設定するにはどうすればよいですか?

after_save_filerを使用してレコードをCSVに保存しています。エラーが発生せず、生成されたファイル(存在する場合)が見つかりません。

これが私が使っているコードです:

保存フィルターを実行した後、どうすれば確認できますか?パスを設定するにはどうすればよいですか?

0 投票する
1 に答える
708 参照

ruby-on-rails - after_post_processまたはafter_saveから、binのいずれかのIDを取得します

私はこれとしばらくの間戦ってきました、そしてあなたの助けは確かに大いに感謝するでしょう。

私はあなたがここで見つけることができるpdf文書に署名する方法を構築しました、そして今私のファイルに署名することからほんの一歩です。

これを非同期で実行したいのですが、最初に同期で実行する方法を理解する必要があります。

だから私は2つの異なるアプローチを試します、post_processの後:

ここで、1が私のrecipient_idになるようなパスにファイルを送信できるようにしたかったのです/original/1/myfilename.pdf(そしてpost_processの後の時点ではnullです)。

次に、after_saveを使用して別のアプローチを試しましたが、recipient_file.to_file(:original)は有効な呼び出しではありません...

ファイルを取得してS3に再度アップロードするにはどうすればよいですか?

編集

いくつかの調査の後、 Amazonからファイルをロードする方法を読みましたが、問題はファイルの内容が空であるということです...何が間違っているのですか?

0 投票する
1 に答える
438 参照

ruby-on-rails-3 - Rails 3: Model After Filter が無限ループを引き起こす

次の After Filters があります。

ユーザー モデル:

結果をコンソールに出力するためにデバッグを実行しましたが、コードがcheck_for_custom_districtメソッドにヒットし、何らかの理由で無限ループが発生しています。これを止める方法がわからない...何かアイデアはありますか?