問題タブ [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.
ruby-on-rails - before_save フィルターで「send」を使用する
:strip_whitespaces
このようなRailsモデルで呼び出されるbefore_saveフィルターがあります
フィルターは、次のstrip_whitespaces
方法で定義されるプライベート メソッドです。
ruby の send メソッドを使用してこのメソッドを DRY-er にするにはどうすればよいですか? これは、このフィルターにさらにフィールドを追加する必要がある場合にも役立ちます。
このようなことを念頭に置いていましたが、うまくいきません
php - PHPで特殊文字を置き換える方法
いくつかの特殊文字を置き換える必要があるコードがあります: 以下のコード:
\012 と \011 を削除しようとしたのは
また使用
wchich は \0 を削除し、str_replace によって 11 と 12 を削除しました... しかし、ex int i = 12; の場合に気付きました。int i = \n; に変更されました。私が起こらないことはありません;<
ruby-on-rails-3 - ユーザーモデルを保存する前に、acts-as-taggable-on gemを使用してタグをフォーマットするにはどうすればよいですか?
モデルを保存する前に、acts-as-taggable-onを使用してタグをフォーマットするにはどうすればよいですか?
私はRubyonRailsプロジェクトで次の宝石を使用しています
ユーザーモデルにインタレストタグを追加しました。
user.rb
最後のユーザーがすでにインタレストタグを持っているとします:バスケットボール、ゴルフ、サッカーインタレストを次のように変更した場合
その場合、u.interest_listは["cats"、 "dogs"、"rabbits"]になります
ただし、u.interestsは、バスケットボール、ゴルフ、サッカーに関連付けられたタグオブジェクトの配列のままになります
タグを保存する前にタグがフォーマットされていることを確認するにはどうすればよいですか?
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 method
false:FalseClass` に対して before_save'エラーが発生します
ruby-on-rails - Rails 3、コントローラーで送信されたフォームの値を変更または入力する
連絡先と記事の 2 つの独立した「コンポーネント」モデルがあります。連絡先にはさまざまな種類があります (生産者、輸出者など)。
新しい記事フォームには、連絡先 (ID とタイトル) を含むドロップダウン セレクターがあり、選択した値とテキストを記事テーブルに保存したいと考えています。
新しい記事フォーム ビュー:
それproducer_id
は機能し、article テーブルに格納されます。
それは私にとって明確で論理的ですが、場合によっては、選択した連絡先の役職を に保存する必要もありproducer_title
ます。
「保存前にモデルで実行する」、「コントローラーで実行する」など、さまざまなオプションを読みましたが、コントローラー内で実行しました。
記事のコントローラー (更新の一部のみ):
これは機能しますが、この問題に対するベストプラクティスのアプローチですか?
params[producer_id]
また、使用する部分を変更すると動作しないのはなぜid: params[:producer_id]
ですか?
よろしくお願いします。
ruby-on-rails-3 - 以前の HABTM 値を取得する
私のアプリでは、私はいくつかの を持っており、特定のに応じて (関連付けを介して)clients
いくつか持っているので、すべてをに手動で追加する代わりに、を選択するだけですべてが自動的に追加されます ( in is )。ハブTM 。elements
has_many_through
BusinessType
Client
elements
Client
BusinessType
business_type
Client
attr_readonly
BusinessType
elements
これがキャッチです。デフォルト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_update
clients'
_was
business_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.elements
or で古い値を取得するにはどうすればよいですbefore_update
かafter_update
?
よろしくお願いします。
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
、検証の問題が発生する可能性がありますか?
ruby-on-rails - Rails: before_save を使用すると検証がバイパスされる
RecommendPost を作成するとき、ユーザーは を入力します。これは youtube ビデオ リンクであり、 を処理してを取得するvideo_url
トリガーです。before_save :get_video_id
video_url
video_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
ですか?