問題タブ [nested-attributes]

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 投票する
1 に答える
1618 参照

ruby-on-rails - :allow_destroy => true の場合、オブジェクトを破棄する代わりに関連付けを削除します

accepts_nested_attributes_forActiveRecord でnewを使用する場合、 オプション を使用できます:allow_destroy => true{"_delete"=>"1", "id"=>"..."}このオプションが設定されている場合、渡されたようなネストされた属性を含むハッシュはupdate_attributes、ネストされたオブジェクトを削除します。

簡単なセットアップ:

質問:ネストされたオブジェクトを削除する代わりに、関連付けを削除するにはどうすればよい"_delete" => "1"ですか? (つまり、上記の場合、ユーザーの forum_id を nil に設定します)

おまけの質問:関連付けを削除するときに、ネストされたオブジェクトの属性も変更したい場合はどうすればよいですか? (状態やタイムスタンプの設定など)

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

ruby-on-rails - ActiveRecord::AutosaveAssociation.marked_for_destruction へのアクセス方法は? 親モデル内から

次の関連付けを持つモデル Person があります。

カスタム検証は現在、失敗すべきではない場合 (一部の検証が破棄対象としてマークされている場合) に失敗します。これは、Person およびそのディストリビューションが保存されます。

ActiveRecord::AutosaveAssociation.marked_for_destruction?バリデーター内で使用して、破棄されようとしているディストリビューションを無視したいと思います。

  1. どうすればその方法に到達できますか? Distribution (通常の Rails モデル) とそのクラスとの関係がどのようなものかはよくわかりません。

  2. これは恐ろしい汚れたハックですか?少し汚れているだけで、問題に対する最も正確な修正です。

デバッガーで ActiveRecord のソース コードを調べて、レコードが実際に破棄対象としてマークされていることを確認しました (つまり、Javascript またはフォーム ビルダーのバグではありません)。

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

ruby-on-rails - nested_attributes を使用した before_add コールバック

以下を考えると:

Foo has_many :bars, :through => :baz

Foo accepts_nested_attributes_for :bar

find_or_create_by_name新しい を追加するときにを実行したいのですが、:barどこに何らかのbefore_add機能を追加できるかわかりません。

この質問の背景は、既存のものを使用しBar validates_uniqueness_of :nameて新しいものを作成しようとするとエラーが発生することです。FooBar

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

ruby-on-rails - HABTM 二重ネスト fields_for

私が仕事をすることができないコードの興味深い部分。私は次のモデル/関係を持っています (不要なコードを除く)

このすべての情報を表示するフォーム:

そして、送信を処理するコントローラー:

HTMLはきれいに見えます:

送信されたパラメーターは次のようになります。

「未定義のメソッド 'service_subtype' for #」エラーが返され、HABTM モデル間の結合テーブルだけが更新されません。これを解決する方法、または舞台裏で何が起こっているのか考えていますか? この手順の背後で起こっている「魔法」を理解して、それが機能していることを確認できるかどうかはわかりません。ほとんどの人は、HABTM はネストされた属性では機能しないと言っているようです。そうらしい。回避策はありますか?

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

ruby-on-rails - ネストされた属性コレクションを更新した後、ActiveRecord::Base.reload を呼び出す必要がありますか?

関連するコレクションに新しいアイテムを追加すると、結果の変更を確認するために foo.reload を呼び出す必要がないことがわかりました (スクリプト/コンソールでうろついています)。

素晴らしい。しかし、コレクションからアイテムを削除する場合、コレクションに変更が反映される前に foo.reload を呼び出す必要があります (save の呼び出し後に DB に表示されます)。

これは正常ですか、それとも関連付けの更新で少し間違ったことをしていますか?

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

ruby-on-rails - ネストされた属性とコントローラーを介した属性の追加?

この質問を説明するのは難しいので、それが私が思いつくことができる最高のタイトルなので、ここにいくつかのコードがあります.

親、子、孫の 3 つのモデルが与えられます。

Parent#new で作成される子レコードと孫レコードの両方に current_user.id を追加したいと思います。隠しフィールドを追加する良い方法が見つからなかったため、今のところ隠しフィールドを使用しています。

作成時に current_user.id を追加するコールバックを作成することで、誰かが助けてくれるでしょうか? とにかく、それをモデルに入れることはあまり運がありませんでしたが、あなたは頭がいいです。

考え?

0 投票する
4 に答える
2635 参照

ruby-on-rails - Ruby on rails - ネストされた属性: ネストされたモデルを検索または作成する方法

Billネストされたモデルを持つモデルがありCustomerます。モデルには、Customer一意性が検証された電話番号があります。請求書の作成中に、電話番号に基づいて既存のレコードを取得するか、存在しない場合は新しいレコードを作成します。ある意味どうすればいいのRESTful

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

ruby-on-rails - activerecordのネストされた属性のbefore_updateコールバックで新しい子を処理する方法

別のモデルオブジェクト(子)にhas_manyアソシエーションを持つモデルオブジェクト(たとえば親)があります。

親では、before_updateコールバックにコードを追加して、その子に基づいて計算された属性を設定します。

私が遭遇した問題は、メソッドParent.update(id、atts)を使用して、新しい子のattsを追加すると、attsコレクションに追加されたものがbefore_update中に使用できないことです(self.childrenは古いコレクションを返します) 。

accepts_nested_attributes_forをいじらずに新しいものを取得する方法はありますか?