問題タブ [model-associations]

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

php - 関連する別のモデルフィールドによるcakephpの注文

CakePHPの検索操作でのorderByに関する簡単な質問が1つだけあります。3つのモデルが相互に関連付けられているとしましょう。3つのモデルのいずれかでfind('all')cakePHPクエリを実行すると、他の2つのモデルのデータも含む結果が得られます。たとえば、私のモデルが次のようになっているとします。

$this->find('all')内部で行うUsersControllerと、3つのモデルがリンクされているため、次のようになります。

私の質問はこれですが、私のfind('all')クエリはモデルで開始されましたが、たとえばモデルのフィールドを言うUserことは可能ですか?orderBycreatedSchool

それが可能かどうか教えてください

ありがとうございました

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

ruby-on-rails - 多くの:スルーアソシエーションが見つかりません

タグを追加できるモデルが2つあります。

  • プレーヤー
  • チケット

両方にTag属するモデルがあるので、2つの結合モデルがあります

  • tag_ticket
  • tag_player

Could not find the association :tag_tickets in model Ticketエラーが発生しましたが、関連付けはそこにあります。

モデルに焦点を当てていTicketますが、プレーヤーモデルは似ているはずです。

これは私の移行ですTagTicket

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

ruby-on-rails-3 - Rails 3.2.1ネストされたフォームとaccepts_nested_attributes_forは次を返します::Client(xxxxx)が期待され、array(xxxxx)を取得しました "

すべてのデータを入力した後、データ入力フォーム(複雑なフォーム)を保存しようとするとこのメッセージが表示されるように、どこが間違っているのかを理解するのを手伝ってください。

私は次のように5つのモデルを持っています:

デザインソースとして次の記事を使用しました。

私のapp/controller / Contracts_controller.rbには、次のものがあります。

私は次のように複雑な形をまとめました:

部分的な_fields:

私の最初のそして差し迫った問題は、フォームにすべてのデータを入力してから「保存」ボタンを押すと、次のようになることです。

ContractsController#CreateのActiveRecord ::AssociationTypeMisMatch。Client(#xxxxxx)が必要です、Array(#xxxxxx)を取得しました。

もう1つの問題は、コントラクトモデルに「accepts_nested_attributes_for:codelines」を含めると、「units_alloc」属性がフォームから消えることです。

これらの2つの質問について、ヘルプやガイダンスをいただければ幸いです。私は複雑なフォームを読み、「複雑なフォーム」のレールキャストを見て、関連付けに関するRailsガイドとaccepts_nested_attributes_forメソッドに関するAPIドキュメントを読んで再読しました。明らかに、これらの概念についての私の理解は、これらの問題を解決するために必要な完全な理解に達していないので、助けを求めています。

app / controllers/contracts_controller.rbを更新します

Contracts_controller.rbのcreateアクションの最初の行として「raiseparams[:contract].to_s」を追加しました。出力は次のとおりです。

アップデート1

Contracts_controllerの新しいアクションを次のように変更しました。

コントラクトを介してコードラインオブジェクトを構築し、次にコードラインオブジェクトを介してコードを構築します

コントラクトを介してclientlinesオブジェクトを構築し、次にclientlinesオブジェクトを介してクライアントを構築します

また、accepts_nested_attributes_for:clientlines、:codelinesを追加し、attr_accessor行を追加して、コントラクトモデルを変更しました。

パラメータに関連付け名を持つnested_attribute_writersがありますが、エラーは次のように変更されました。

ここでの問題は、「attr_accessorがすべての関連付けを参照するのは正しいですか?」です。私が持っているもう1つの質問は、「クライアント、コード、およびコードラインのレコードを作成するためにform_helperを使用する必要がありますか?」です。私がこれを尋ねる理由は、contracts_controllerにあるビルドアクションにもかかわらず、それはまだnilであるように見えるからです。2番目の質問に対する答えが「はい」の場合、form_helperの作成をガイドするリソースを教えていただけますか?RailsGuidesをチェックしています。

ありがとう。

アップデート2

私は輪になって行きました、私は私のcontracts_controllerの新しいアクションを次のように変更しました:

また、契約モデルを次のように戻しました。

最後に、ビューの部分的な_fields.html.hamlで、コードラインに関連するセクションを削除しました。

そして今、私のパラメータには必要な「clients_attributes」と「codes_attributes」があり、その結果、フォームは適切なテーブルに保存されます。私はまだいくつかの問題を抱えています。つまり、コードラインの余分な属性、'units_alloc'などですが、状況は良くなっています。

0 投票する
3 に答える
299 参照

ruby-on-rails - Railsはレコードを別のテーブルに削除します

Railsでは、レコードを削除するときに、そのような削除されたレコード用に別のテーブルを維持したいと思います(構造的には前者に類似しています)。

これを実現する1つの方法は、最初のモデルから構造、検証、および関連付けを明らかにコピーし、それを削除済みアイテムモデルに貼り付けることです。ただし、これは多くのコード冗長性をもたらし、スケーラブルなソリューションではありません。

多くの(またはまったく)コードの冗長性なしで、または上記のものよりスケーラブルである可能性のあるソリューションなしで、Railsでこれを達成する方法はありますか?

Ruby1.9.3-p125とRails3.2を使用しています。

アップデート

テーブルに追加のis_deleted列を使用することを検討しましたが、このテーブルが大きくなりすぎて投稿が削除されて乱雑になることを望まなかったため、これに反対しました。私はこれらの削除された投稿に実際にアクセスするつもりはありません-これらは単に記録管理またはアーカイブの目的で保存されています。この列を追加すると、このテーブルへのアクセスが遅くなり、さらに重要なことに、モデルis_deleted == falseのにこのチェックを含めたとしても、SQL条件のチェックをどこかで見逃す可能性があります。default_scope

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

ruby-on-rails-3 - 中間モデルを含む has_many :through アソシエーションの検索

まずは話題。

次のような has_many :trough 関連付けで相互にリンクされている 3 つのモデルがあります。

私がする必要があるのは、特定のユーザーが所有するすべての文字 (:owner フィールドが true) を名前順に並べて見つけるために、ユーザー レコードから検索する必要があることです。私はこれで数時間立ち往生しているので、非常に単純な答えを見逃していた可能性があると思います...しかし、これまでに試したことは何もうまくいきませんでした。

UPDATE は機能するものを見つけました:

:chars_del でエラーが発生した理由はわかりませんが、完全なテーブル名でうまくいきました。

アンドリュー、あなたの答えもうまく機能し、データベース上で少し高速です。

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

mysql - Rails AssociationとForeign_Keyの混乱、私の外部キーはどうあるべきですか?

この関連付けがどのように表示され、機能するかを理解できないようです。私は命名規則のようにあまりレールがないことを知っていますが、データを取得するソースDBでもありません。主キーは、使用する実際のソースデータベースにも関連しているため、変更する自由がありません。 RailsデータベースにロードするETL。

これらは私のモデルです:

そして、これらはMySQLテーブルスキーマです。

そして、これが私が返すエラーです。アクティブレコードが空の列名でクエリを実行しているようです。

特定のクラスのプロパティを返したいのですが。

更新:1つの回答ごとに外部キー宣言を追加しました。しかし、それでも同様のエラーを受け取ります。これは新しいエラーです。

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

ruby-on-rails-3 - Rails 3-アソシエーションでSolrを使用して検索する方法は?

すでに一日中、アソシエーションで検索するためのSolrのセットアップに苦労しています。

私はテーブルの写真を持っていて、このテーブルには自然都市のようなタグがあります。これらのタグはテーブルTagsに保存されます。テーブルにphoto_tagsはphoto_idtag_idが保存されます。

自然という言葉を助けようとするとき、このタグが付いたすべての写真のステートメントを取得したいのですが、このようにしようとしています(モデル写真):

でもタグ付きの写真が撮れません...

編集-私の協会:

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

ruby-on-rails - Rails - 作成後のコールバックとネストされた属性の実行シーケンス

Userと UserProfileを使用したモデルの簡単なセットアップがUserあります。UserProfilehas_one :user_profilebelongs_to :user

しかし、Rails がafter_createコールバックの実行順序をaccepts_nested_attributes_for定義し、モデルで定義する方法について頭を悩ませることはできません。この2つのケースを考えてみましょう。

ケース 1:

ここで、コンソールを介して (user_profile_attributes ハッシュも使用して) ユーザーを作成するafter_createと、ユーザーとそのユーザー プロファイルが作成された後にコールバックがトリガーされます。

ケース 2:after_createを上に配置した 場合、

コールバックは、ユーザーが作成された後、ユーザー プロファイルを作成する前にトリガーされます。

これは、機能することが期待される方法です。ここでRailsは内部的に何をしますか? 実行順序は単純にコードの順番で決まるのでしょうか?

これをさらに深く掘り下げたり、デバッグしたりするには、どこから始めればよいですか?

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

cakephp - CakePHP モデル拡張関連付け

InventoryCategory の概要を見ていると、Inventory は取得できますが、InventoryImages は取得できません。CakePHP によって報告されるエラーは [ モデル "Inventory" はモデル "InventoryImage" に関連付けられていません] です。これらは私が採用しているモデルです:

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

ruby-on-rails-3 - Railsで1つのモデルと2つのhas_many関係を保存する最も簡単な方法は?

A 'userhas manypostsおよび a producthas manypostsであり、与えられたものは aまたは a のpostいずれかに属することができますが、両方に属することはできません。userproduct

テーブルにhas_many :through保存され、次のように書かれた関係だと思います:posts_relationships

私が必要とするものを表現します。 それはそれを行うための正しくて最も簡単な方法ですか? 複雑な関係ではないので、できるだけ簡単に書きたいと思います。