問題タブ [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.
php - 関連する別のモデルフィールドによるcakephpの注文
CakePHPの検索操作でのorderByに関する簡単な質問が1つだけあります。3つのモデルが相互に関連付けられているとしましょう。3つのモデルのいずれかでfind('all')
cakePHPクエリを実行すると、他の2つのモデルのデータも含む結果が得られます。たとえば、私のモデルが次のようになっているとします。
$this->find('all')
内部で行うUsersController
と、3つのモデルがリンクされているため、次のようになります。
私の質問はこれですが、私のfind('all')
クエリはモデルで開始されましたが、たとえばモデルのフィールドを言うUser
ことは可能ですか?orderBy
created
School
それが可能かどうか教えてください
ありがとうございました
ruby-on-rails - 多くの:スルーアソシエーションが見つかりません
タグを追加できるモデルが2つあります。
- プレーヤー
- チケット
両方にTag
属するモデルがあるので、2つの結合モデルがあります
- tag_ticket
- tag_player
Could not find the association :tag_tickets in model Ticket
エラーが発生しましたが、関連付けはそこにあります。
モデルに焦点を当てていTicket
ますが、プレーヤーモデルは似ているはずです。
これは私の移行ですTagTicket
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'などですが、状況は良くなっています。
ruby-on-rails - Railsはレコードを別のテーブルに削除します
Railsでは、レコードを削除するときに、そのような削除されたレコード用に別のテーブルを維持したいと思います(構造的には前者に類似しています)。
これを実現する1つの方法は、最初のモデルから構造、検証、および関連付けを明らかにコピーし、それを削除済みアイテムモデルに貼り付けることです。ただし、これは多くのコード冗長性をもたらし、スケーラブルなソリューションではありません。
多くの(またはまったく)コードの冗長性なしで、または上記のものよりスケーラブルである可能性のあるソリューションなしで、Railsでこれを達成する方法はありますか?
Ruby1.9.3-p125とRails3.2を使用しています。
アップデート
テーブルに追加のis_deleted
列を使用することを検討しましたが、このテーブルが大きくなりすぎて投稿が削除されて乱雑になることを望まなかったため、これに反対しました。私はこれらの削除された投稿に実際にアクセスするつもりはありません-これらは単に記録管理またはアーカイブの目的で保存されています。この列を追加すると、このテーブルへのアクセスが遅くなり、さらに重要なことに、モデルis_deleted == false
のにこのチェックを含めたとしても、SQL条件のチェックをどこかで見逃す可能性があります。default_scope
ruby-on-rails-3 - 中間モデルを含む has_many :through アソシエーションの検索
まずは話題。
次のような has_many :trough 関連付けで相互にリンクされている 3 つのモデルがあります。
私がする必要があるのは、特定のユーザーが所有するすべての文字 (:owner フィールドが true) を名前順に並べて見つけるために、ユーザー レコードから検索する必要があることです。私はこれで数時間立ち往生しているので、非常に単純な答えを見逃していた可能性があると思います...しかし、これまでに試したことは何もうまくいきませんでした。
UPDATE は機能するものを見つけました:
:chars_del でエラーが発生した理由はわかりませんが、完全なテーブル名でうまくいきました。
アンドリュー、あなたの答えもうまく機能し、データベース上で少し高速です。
mysql - Rails AssociationとForeign_Keyの混乱、私の外部キーはどうあるべきですか?
この関連付けがどのように表示され、機能するかを理解できないようです。私は命名規則のようにあまりレールがないことを知っていますが、データを取得するソースDBでもありません。主キーは、使用する実際のソースデータベースにも関連しているため、変更する自由がありません。 RailsデータベースにロードするETL。
これらは私のモデルです:
そして、これらはMySQLテーブルスキーマです。
そして、これが私が返すエラーです。アクティブレコードが空の列名でクエリを実行しているようです。
特定のクラスのプロパティを返したいのですが。
更新:1つの回答ごとに外部キー宣言を追加しました。しかし、それでも同様のエラーを受け取ります。これは新しいエラーです。
ruby-on-rails-3 - Rails 3-アソシエーションでSolrを使用して検索する方法は?
すでに一日中、アソシエーションで検索するためのSolrのセットアップに苦労しています。
私はテーブルの写真を持っていて、このテーブルには自然や都市のようなタグがあります。これらのタグはテーブルTagsに保存されます。テーブルにphoto_tagsはphoto_idとtag_idが保存されます。
自然という言葉を助けようとするとき、このタグが付いたすべての写真のステートメントを取得したいのですが、このようにしようとしています(モデル写真):
でもタグ付きの写真が撮れません...
編集-私の協会:
ruby-on-rails - Rails - 作成後のコールバックとネストされた属性の実行シーケンス
Userと UserProfileを使用したモデルの簡単なセットアップがUser
あります。UserProfile
has_one :user_profile
belongs_to :user
しかし、Rails がafter_create
コールバックの実行順序をaccepts_nested_attributes_for
定義し、モデルで定義する方法について頭を悩ませることはできません。この2つのケースを考えてみましょう。
ケース 1:
ここで、コンソールを介して (user_profile_attributes ハッシュも使用して) ユーザーを作成するafter_create
と、ユーザーとそのユーザー プロファイルが作成された後にコールバックがトリガーされます。
ケース 2:after_create
を上に配置した
場合、
コールバックは、ユーザーが作成された後、ユーザー プロファイルを作成する前にトリガーされます。
これは、機能することが期待される方法です。ここでRailsは内部的に何をしますか? 実行順序は単純にコードの順番で決まるのでしょうか?
これをさらに深く掘り下げたり、デバッグしたりするには、どこから始めればよいですか?
cakephp - CakePHP モデル拡張関連付け
InventoryCategory の概要を見ていると、Inventory は取得できますが、InventoryImages は取得できません。CakePHP によって報告されるエラーは [ モデル "Inventory" はモデル "InventoryImage" に関連付けられていません] です。これらは私が採用しているモデルです:
ruby-on-rails-3 - Railsで1つのモデルと2つのhas_many関係を保存する最も簡単な方法は?
A 'user
has manyposts
および a product
has manyposts
であり、与えられたものは aまたは a のpost
いずれかに属することができますが、両方に属することはできません。user
product
テーブルにhas_many :through
保存され、次のように書かれた関係だと思います:posts_relationships
と
私が必要とするものを表現します。 それはそれを行うための正しくて最も簡単な方法ですか? 複雑な関係ではないので、できるだけ簡単に書きたいと思います。