問題タブ [belongs-to]

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 に答える
1722 参照

ruby-on-rails - Rails: belongs_to を介してレコードを保存し、外部キーを設定する

このコードを記述するより良い方法はありますか? それは私にぴったりではありません.私はすでに知っておくべき本当に「レールのような」何かがあるように感じます:

レコードを作成した後、選択した親テンプレートを取得し、parent_in_useそれに基づいてレコードを作成しています。このようにしてテンプレートを変更することができ、in_use レコードは私のオブジェクトと共に永遠に存続します。ParentInUse クラスと ParentTemplate クラスはどちらも、STI を使用して Parent から継承します。

これは十分に簡単であると確信していますが、その方法がわかりません。基本的には、レコードを作成して 1 回の操作で割り当てたいと考えています。

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

ruby-on-rails - 2つの単一テーブル継承モデル間の関係

私は次の2つのモデルを持っています

会社であろうと個人であろうと、1つの連絡先に多くのContactFields(住所と電話番号)を持たせたいのですが...では、それらの連絡先が多く所属しているのはどこに置くべきですか?ありがとう

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

ruby-on-rails - ActiveRecord の has_one 関係が特定のケースで返されない

それぞれが入れ子になっている 3 つのモデルがあるとします。最上位オブジェクトを作成し、他の子オブジェクトを build_* にすると、元のインスタンスの save() 前後のリレーションシップを通じてすべての子オブジェクトを取得できます。ただし、 find(:id) の後に第 2 レベルのネストされたオブジェクトを取得しようとすると、元の親は失敗します。ただし、第 1 レベルのネストされたオブジェクトは取得できます。これは通常コントローラーで発生しますが、以下のコンソール出力で説明します。

私は何を見落としていますか?

前もって感謝します!
~jpv

以下のすべてのボイラープレートのもの:

適切な外部キーは、「belongs_to」クラスのそれぞれにあります。

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

php - Cakephp のオプションの belongsTo 関係

CakePHP アプリケーションに単純なカテゴリ モデルがあります。サブカテゴリを追加したいのですが、parent_id 列を追加するだけでこれを行うことができます。

parent_id は、同じカテゴリ モデルを参照する属している関係です。

管理者の足場を生成すると、ドロップダウンが表示されます (正しい!) が、このドロップダウンに NULL オプションを含めたい (トップレベルのカテゴリの場合)。

これは可能ですか?もしそうなら、どのように..

(注: 現在、ツリーの動作には関心がありません)

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

zend-framework - Element、サブフォーム、belongsToを使用したZendFrameworkの問題

Zend_Formと、サブ配列に配置する必要のある要素を使用して、まだ髪を引っ張っています。フォーム->populate()は、belongsTo()を使用して親配列に設定されたサブフォーム内の要素を操作する場合は機能しません-実際にはZend_Form-> setDefaults()のバグだと思いますが、見たかっただけです他の誰かがa)同じ問題を抱えていてb)それを回避することができた場合...

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

ruby-on-rails - Ruby on Rails で相互の belongs_to を設定する

ウィキを作成しています。各記事には多くのリビジョンがあり、記事は単一の現在のリビジョンに属します。したがって、データベースでは、記事はリビジョンの ID への参照を 1 つ持ち、各リビジョンは所属する記事への参照を 1 つ持ちます。先に進む前に、これは物事を行うための正気な方法のように思えますか? それはかなり非正統的ですが、論理的だと思います。同様の状況にある他の人がどのように設定したかはわかりません.

問題は、このタイプの相互の belongs_to 関係が、モデルを作成するときに Rails を実際に混乱させているように見えることです。私が最初に記事を作成するとき、それに合わせて最初のリビジョンも作成したいと思います。

before_create メソッドを追加して、次のようにしました。

しかし、これは保存時にスタック オーバーフローを引き起こします。Rails はループ内で最初にアーティクルを保存しようとするようです。論文。

私が物事を分割し、それらを同時に作成しない場合 (ただし、トランザクション内で)、最初に作成されたものは参照セットを取得しません。例えば:

保存に失敗したため、リビジョンの article_id が null のままになります。

update と save で変数を初期化するだけで、after_create メソッドを呼び出すことでこれを回避できると思いますが、これは巨大な混乱に変わりつつあり、Rails では通常、何か間違ったことをしていることを意味するように感じます。 -頭がおかしい。

誰か助けてもらえますか、それとも変更を保存する after_create メソッドを少し作成するのに行き詰まっていますか?

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

ruby-on-rails - ActiveRecord :include は、foreign_key を使用した belongs_to に対して機能しません

私はこのように設定された2つのモデルを持っています:

しかし、私がするたびに

発行される sql は常に ID を探します (そしてゼロを使用します):

私は何か間違ったことをしていますか、それとも との関係での使用foreign_keysに問題がありますか?belongs_toinclude

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

ruby-on-rails - Rails:モデルAの場合has_manyBbelongs_to C return Aここで、BはCに属し、Bは指定されたAに対して最近作成されましたか?

私には3つのモデルA、B、CがありA has_many Bます。B belongs to C、およびB has a created_on timestamp。Chas_manyAからB。

AがCに属するBを持ち、BがそのAに対して最後に作成されたBである すべてのAを返したい。

メソッドループでこれを行うことができます。これはnamed_scopesだけで実行できますか?それとも他のエレガントで効率的な方法ですか?

実世界(TM)の要求に従って、例A、B、およびCは、たとえば、ペット(A)、ペット名(B)、および名前(C)として想像できます。PetsNamesは特定の時間にペットに付けられ、任意の名前を多くのペットに付けることができます。どのペットも多くの名前を持つことができます(:through関係)。特定の名前について、その名前がそのペットに対して最後に作成されたPetNameであるすべてのペットが必要です。呼び出しは次のようになります@name.pets.most_recently_named_as

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

ruby-on-rails - Rails ActiveRecord の関連付けが一貫して更新されない

理解できない Rails 2.3.5 ActiveRecord の動作に遭遇しました。オブジェクトのアソシエーション ID が一貫性のない方法で更新される可能性があるようです。

これは、次の例で最もよく説明されています。

Poststring 属性'title'を持つCommentモデルとstring 属性を持つモデルを作成します'content'

協会は次のとおりです。

シナリオ #1: 次のコードPostでは、関連付けられた を使用して 1 つを作成し、1 つCommentPostfind'ing して 2 つ目を作成し、1 つ目に 2 つ目Commentを追加して、明示的な割り当てなしで2 つ目が関連付けられていることPostを発見します。PostComment

シナリオ #2: 上記のコマンドを再度実行しますが、今回は結果に影響を与えない追加のコマンドを 1 つ挿入します。追加のコマンドは、作成、に追加する前にpost2.comments発生するものです。comment2comment2post1

シナリオ 1 では 2 つのコメントがあったのに対し、このシナリオでは1 つのコメントしか関連付けられていないことに注意してください。post2

大きな疑問:新規をpost2.comments追加する前に実行して、どのコメントが に関連付けられているかに違いがあるのはなぜですか?Commentpost1post2

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

ruby-on-rails - Railsで「両側」の多対多の関係を作成する方法は?

写真サイトがあるとします。作成者は、他の作成者からの更新を受け取るために購読できます。明らかに、著者 A が著者 B を購読しているからといって、B が A を購読しているとは限りません。したがって、モデルを構築します。

このように使用できます

  1. some_author.subscribed_by_author -- some_author が購読している著者のリスト。
  2. どのサブスクリプションでも、両端 (誰が誰にサブスクライブしているか) を知ることができます。

しかし問題は、Rails のみを使用して (プレーン SQL を使用せずに) ある作成者を購読している人のリストを取得する方法です。つまり、「some_author を購読しているのは誰ですか?」

質問: Rails には、関係を両側で機能させる機能、つまり、書くだけでsome_author.subscribed_BY_authorなく持つ機能はありsome_author_subscribed_TO_authorますか? あるとすれば、それは何ですか?

PS明白な解決策は

  1. データベースの設計を変更し、「方向」という名前の列を追加します
  2. サブスクリプションが作成されるたびに 2 つのレコードを作成する
  3. オーサーモデルに追加

    has_many :subscribed_BY_author, :through => :subscriptions, :source => :subscribed_to, :conditions => "direction = 'by'"

    has_many :subscribed_TO_author, :through => :subscriptions, :source => :subscribed_to, :conditions => "direction = 'to'"

しかし、データベースの設計を変更せずに解決策があるのだろうか。