問題タブ [before-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 に答える
200 参照

ruby-on-rails - before_save フィルターで「send」を使用する

:strip_whitespacesこのようなRailsモデルで呼び出されるbefore_saveフィルターがあります

フィルターは、次のstrip_whitespaces方法で定義されるプライベート メソッドです。

ruby の send メソッドを使用してこのメ​​ソッドを DRY-er にするにはどうすればよいですか? これは、このフィルターにさらにフィールドを追加する必要がある場合にも役立ちます。

このようなことを念頭に置いていましたが、うまくいきません

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

php - PHPで特殊文字を置き換える方法

いくつかの特殊文字を置き換える必要があるコードがあります: 以下のコード:

\012 と \011 を削除しようとしたのは

また使用

wchich は \0 を削除し、str_replace によって 11 と 12 を削除しました... しかし、ex int i = 12; の場合に気付きました。int i = \n; に変更されました。私が起こらないことはありません;<

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

ruby-on-rails-3 - ユーザーモデルを保存する前に、acts-as-taggable-on gemを使用してタグをフォーマットするにはどうすればよいですか?

モデルを保存する前に、acts-as-taggable-onを使用してタグをフォーマットするにはどうすればよいですか?

私はRubyonRailsプロジェクトで次の宝石を使用しています

ユーザーモデルにインタレストタグを追加しました。

user.rb

最後のユーザーがすでにインタレストタグを持っているとします:バスケットボール、ゴルフ、サッカーインタレストを次のように変更した場合

その場合、u.interest_listは["cats"、 "dogs"、"rabbits"]になります

ただし、u.interestsは、バスケットボール、ゴルフ、サッカーに関連付けられたタグオブジェクトの配列のままになります

タグを保存する前にタグがフォーマットされていることを確認するにはどうすればよいですか?

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

ruby-on-rails - if on before save を使用すると、false:FalseClass に対して未定義のメソッド `before_save' が取得されるのはなぜですか?

before_saveエントリの名前を、空白のままにした場合に作成された日付に設定するを作成しようとしています。メソッドで動作するようになりました。これが私のモデルです。

ただし、同じコードだと思うのは、before_save. 基本的に、私はこれをやろうとしていたのでbefore_save :default_name, :if => self.name.blank?、私の方法は次のように短くなります:

if ステートメントが機能しないのはなぜbefore_saveですか? undefined methodfalse:FalseClass` に対して before_save'エラーが発生します

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

ruby-on-rails - Rails 3、コントローラーで送信されたフォームの値を変更または入力する

連絡先と記事の 2 つの独立した「コンポーネント」モデルがあります。連絡先にはさまざまな種類があります (生産者、輸出者など)。

新しい記事フォームには、連絡先 (ID とタイトル) を含むドロップダウン セレクターがあり、選択した値とテキストを記事テーブルに保存したいと考えています。

新しい記事フォーム ビュー:

それproducer_idは機能し、article テーブルに格納されます。

それは私にとって明確で論理的ですが、場合によっては、選択した連絡先の役職を に保存する必要もありproducer_titleます。

「保存前にモデルで実行する」、「コントローラーで実行する」など、さまざまなオプションを読みましたが、コントローラー内で実行しました。

記事のコントローラー (更新の一部のみ):

これは機能しますが、この問題に対するベストプラクティスのアプローチですか?

params[producer_id]また、使用する部分を変更すると動作しないのはなぜid: params[:producer_id]ですか?

よろしくお願いします。

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

ruby-on-rails-3 - 以前の HABTM 値を取得する

私のアプリでは、私はいくつかの を持っており、特定のに応じて (関連付けを介して)clientsいくつか持っているので、すべてをに手動で追加する代わりに、を選択するだけですべてが自動的に追加されます ( in is )。ハブTM 。elementshas_many_throughBusinessTypeClientelementsClientBusinessTypebusiness_typeClientattr_readonlyBusinessTypeelements

これがキャッチです。デフォルトBusinessTypeで作成した後、クライアントは要素を更新し、必要に応じて削除または追加できます(ほとんどは追加します)。したがって、私がやろうとしていることは次のとおりです。

onebusiness_typeに要素[1,2,3]があり、 one に割り当てられているとclientします。次に、次の要素が手動でclient=に追加される[4,5,6]ため、最終的には になり[1,2,3,4,5,6]ます。ここではすべて問題ありません。

しかし、この後、business_typeが更新され、要素が2削除されるため、最終的には になり[1,3]ます。これが取引です。 を削除してクライアントを更新したいのですが、問題の に対応しない を削除しないでください2。コールバックを使用して要素を更新していますが、メソッドが機能しませんHABTM 関係 (古い要素を取得するため。[4,5,6]business_type[1,3,4,5,6]after_updateclients'_wasbusiness_type's

before_update最初にコールバックを使用しclient.elements = client.elements - business_type.elementsて DB[1,2,3,4,5,6] - [1,2,3] = [4,5,6]に一時的に保存し、 after_update でclient.elements = client.elements + business_type.elements取得しようとしました[4,5,6] + [1,3] = [1,3,4,5,6]が、これには既に の新しい値があり[1,3]ます。business_type.elementsor で古い値を取得するにはどうすればよいですbefore_updateafter_update?

よろしくお願いします。

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

ruby-on-rails - Rails: `before_save` は `save?` を妨害します

私は自分のアプリを起動するためにseed.rbを使用しています。

カテゴリ モデルには次 before_Save :get_external_resources のようなものがあります。つまり、nokogiri を使用してサイト外の何かを取得できます。

問題は、 を実行するrake db:seedと、カテゴリが 2 回保存されることです。をオフにしようとしましたがbefore_save、一度しか保存されません。だから私はそれを推測しall?(&:save)before_saveこの配列を別々に2回保存しました。

どうすれば余分な節約を避けることができますか? オブジェクトが保存される前に何かをする必要があり、シード時にこれらのオブジェクトが保存されているかどうかを知りたいです。どうafter_createですか?メソッドを追加する必要があると思いますがself.save、検証の問題が発生する可能性がありますか?

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

ruby-on-rails - Rails: before_save を使用すると検証がバイパスされる

RecommendPost を作成するとき、ユーザーは を入力します。これは youtube ビデオ リンクであり、 を処理してを取得するvideo_urlトリガーです。before_save :get_video_idvideo_urlvideo_id

たとえば、ユーザーが を作成し、入力し@recommend_postてからhttps://www.youtube.com/watch?v=R9ITLdmfdLIトリガー:get_video_idすると、 video_id が取得されますR9ITLdmfdLI。最後に、すべてが @recommend_post に保存されます

問題は、validates_uniqueness_of :video_idここで機能していないことです。(YouTube の動画を 1 回だけ推奨できるようにしたい。) before_save メソッドによって検証がバイパスされていると思いますか?

そして、どのように検証するのvideo_idですか?