問題タブ [has-one-through]
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 - 関連を介して has_one を構築するにはどうすればよいですか?
関連付けの場合、has_one
次のような関連付けを構築できます。
has_one, through:
アソシエーションはどのように構築すればよいですか?
例えば:
どのように構築すればよいbaz
ですか?この例foo.build_baz
では、No Method Error
.
ここのドキュメントは次のように述べています。
has_one アソシエーションを宣言すると、宣言するクラスはアソシエーションに関連する 4 つのメソッドを自動的に取得します。
しかし、そうではないようです。Pry を使用して のインスタンスをイントロスペクトすることFoo
ができます。has_one
through:
ruby-on-rails - 保存されていないモデルを使用した Has One Through と Has Many Through の確立
Google スプレッドシートを Rails モデルに変換できるようにする gem を作成しました。このプロセスの順序には、すべてのモデルの作成、それらの関連付けの接続、すべてのモデルの保存が含まれます。利用可能なすべてのタイプの関連付けをサポートし、いずれの場合でも、モデルの作成、関連付けの確立、およびモデルの保存が正しく機能します。例外は次のとおりです。
私は単純なhas_one, through
関連付けを持っています(簡潔にするために属性アクセスは省略されています):
関連付けの割り当てがどちら側で行われるかによって、一貫性のない動作が見つかります。
右から左への割り当て:
右から左への割り当て:
この動作は非常に矛盾しているようです。どうしてこれなの?なぜこれは一方の方法で機能し、もう一方の方法では機能しないのですか? 保存されていない両方のレコードでこの関係を確立する方法はありますか?
明らかな解決策は、関係を設定する前にすべてを保存することですが、上記で説明したように、関連付けが確立されたときにモデルを保存しない必要があり、他のすべてのタイプの関連付けでは、この点で問題はありません。
ruby-on-rails - Rails 4: ActiveRecord => has_one :through フィールドを db から「選択」できません
「has_one :through」関連付けから 1 つのフィールドを取得しようとしています。次のモデルがあると仮定します。
...そして次のモデル:
.. そして、予測に基づいて人物の名前のみを引き出す ActiveRecord を使用してクエリを作成したい (私はその愚かさを知っていますが、これは単なる演習です)。このようなもの:
またはSQL用語で
だから私はこのようなことを試しました:
これにより、Forecast オブジェクトの空のインスタンスが返されます
それで、私はこれを試しました:
ただし、これは空の Forecast オブジェクトのコレクションにもなります
しかし、これを行うとまさに私が望む結果になりますが、これはすでにデータベースが照会された後です:
select を使用して DB から first_name だけを取得し、データベースから first_name だけをプルできないのはなぜですか? 私は明らかに何かが欠けています。
ruby-on-rails - Rails: has_one のうちの 2 つに基づいて関連付けを介してオブジェクトを検索する
私のレールアプリにはUser
、Convo
およびUserConvo
モデルがあります。UserConvo は User と Convo の両方に属します。コンボは次のようになります。
特定のホストとゲストを持つ Convo をクエリする場合、私がやりたいこと。
私はこれを試しました:
includes
の代わりに を使用した順列もありjoins
ます。
基本的に、関連付けを通じて has_one の 2 つに基づいてオブジェクトを見つけるにはどうすればよいでしょうか。convo.host
とconvo.guest
ユーザーの両方に注意してください。
laravel-5 - Eloquent/Laravel5 離れた関係をつなぐ ("hasOneThrough")
要するに質問:
「pages」と「tasks」は、ピボットテーブル「page_tasks」によってリンクされた多対多の関係にあります。テーブル "responses" は、外部キー "page_task_id" によってそのピボット テーブルにリンクされています。
ここで、Eloquent を使用して、応答が属するページとタスクに直接アクセスできるようにしたいと考えています。ただし、hasManyThrough 関数は、別の場所でforeign_keys を調査するため、機能しません。
「フィールド リスト」の不明な列「tasks.page_task_id」
これは、Eloquent が page_tasks を指す外部キー page_task_id を持つタスク テーブルを調査することを意味します。しかし、私のモデルでは、page_tasks テーブルには、タスクを指す外部キー task_id があります。その事実を雄弁に伝えるにはどうすればよいですか?
私が試した別のアプローチは、以前に定義された既存のリレーションを使用することでした。
ただし、これは「タスク」と呼ばれるメソッドがないことを示しています。
これを達成するために推奨される方法は何ですか?私は何を間違っていますか?
必要に応じて、さらに詳細を以下に示します。
"pages" と "tasks" は、それをリンクするピボット テーブル page_tasks と多対多の関係にあります。
ページモデル:
タスクモデル:
これはうまくいきます。
応答モデルは次のようになります
PageTask-Model は次のようになります。
ruby-on-rails - Rails: has_one 関係は、直接または :through を必要とすることができます
私の Rails アプリでは、has_one または has_one :through のいずれかになるリレーションシップがあり、これをどのように構築するかがわかりません。
つまり、Foo、Bar、および Baz というクラスがあるとすると、Foo と Baz の関係は次のいずれかになります。
またはそれは可能性があります
両方の関係を管理する最善の方法を知っている人はいますか?