問題タブ [has-many-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_many :through 関係で重複を避ける方法は?
どうすれば次のことを達成できますか? 2 つのモデル (ブログとリーダー) と、モデル間に N:M の関係を持たせるための JOIN テーブルがあります。
私が今やりたいことは、さまざまなブログに読者を追加することです。ただし、読者をブログに追加できるのは 1 回だけという条件があります。したがって、テーブルに重複 (同じreaderID
、同じblogID
)があってはなりません。BlogsReaders
どうすればこれを達成できますか?
2 番目の質問は、読者がまだ購読していないブログのリストを取得するにはどうすればよいですか (たとえば、ドロップダウン選択リストを埋めて、読者を別のブログに追加するために使用できます)。
ruby-on-rails - ユーザーにhas_many:throughテーブルをユーザー入力属性なしで作成させるにはどうすればよいですか?
2つのモデル(ユーザーとコース)と、コースへの登録を可能にするJOINテーブルがあります。
登録JOINテーブルには、成績、完了率などの他の属性があります。ただし、登録以外の属性には、ユーザーからの入力は必要ありません。理想的にはnew_course_enrollment(@course, {:user_id => current_user} )
、バックグラウンドで登録を作成し(ユーザーが何も入力する必要がない)、「登録」リンクを「登録済み」ステータスに置き換えてコースページにリダイレクトするリンクが必要です。デフォルトのRESTfulEnrollments#newコントローラーアクションを変更せずに、モデルでこれを行う方法はありますか?
ruby-on-rails - Rails has_many :結合モデルの追加属性による検索を介して
Ruby と Rails はどちらも初心者ですが、今では本で教育を受けています (これはどうやら何の意味もありませんね、笑)。
テーブル EventUser を介して結合された Event と User の 2 つのモデルがあります。
このプロジェクトはカレンダーであり、特定のイベントにサインアップして名前を書き留める人々を追跡する必要があります。多対多は良いアプローチだと思いますが、次のようなことはできません。
イベントは実際にはその余分なデータを持っていないため、EventUser モデルは持っています。そして、私ができる間:
これは「レールウェイ」に反するようです。これは今夜(今朝)長い間私を悩ませてきましたか?
ruby-on-rails - has_many からエレガントに属性を選択:Rails の結合モデルを通じて
has_many :through アソシエーションの結合モデルから属性を選択する最も簡単でエレガントな方法は何だろうと思っています。
次の Item クラスを持つ Item、Catalog、および CatalogItems があるとします。
さらに、CatalogueItems に position 属性があり、任意のカタログと任意のアイテムの間に CatalogueItem が 1 つしかないとします。
位置属性を取得するための最も明白ですが、少しイライラする方法は次のとおりです。
@item.catalogs.first.position を実行できるように見えるので、これは面倒です。これは、必要な位置 (@item の最初のカタログに対応する位置) を完全に指定したためです。
これを取得するために私が見つけた唯一の方法は次のとおりです。
これで、Item.catalogs.first.position を実行できます。ただし、これはちょっとしたハックのように思えます。Catalog インスタンスに追加の属性を追加しています。また、@catalogs に Catalog.find または @item.catalogs を入力する 2 つの異なる状況でビューを使用しようとする可能性も開きます。ポジションが存在する場合もあれば、存在しない場合もあります。
誰もこれに対する良い解決策を持っていますか?
ありがとう。
ruby-on-rails - 最後の has_many :through レコードが削除された後に関連付けを破棄する
通常の では、親レコードが削除されたときに関連付けを削除するhas_many
オプションがあります。:dependent => :destroy
ではhas_many :through
、子レコードに関連付けられた他の親が存在する可能性があるため、:dependent => :destroy
影響はありません。
子レコードが最後の HMT 関連付けから孤立した後、子レコードが確実に削除されるようにするにはどうすればよいですか?
ruby-on-rails - Rails: HasManyThroughAssociationNotFoundError
has_many through
協会を機能させるのに問題があります。
私はこの例外を受け取り続けます:
関係するモデルは次のとおりです。
そして、これは私のスキーマです:
ruby-on-rails - has_many:find_or_initialize_byでブレークスルー
多くのFilteredUsersを持ち、それに属するモデルFeedがあります。この場合、has_many:through関係を介して実装しました。
レコードが存在しない場合はレコードを作成し、存在する場合はオブジェクトを検索したいと思います。find_or_initialize_by(またはfind_or_create_by)を使用しようとすると、次のような例外がスローされます。undefined method 'feed_id=' for <FilteredUser..
コードは次のとおりです。
これを修正する方法またはそれをDRYlyで回避する方法に関する提案はありますか?
ありがとう!
ruby-on-rails - has_many :through でビルドを使用する
Entry
モデルとモデルがCategory
あり、エントリには多くのカテゴリを含めることができます (を介してEntryCategories
):
新しいエントリを作成するときは、 を呼び出して作成します@journal.entries.build(entry_params)
。ここentry_params
で、 はエントリ フォームのパラメータです。ただし、カテゴリが選択されていると、次のエラーが発生します。
2 行目の「#」はそのままであることに注意してください。オブジェクトを出力しません。
フォームのカテゴリ選択ボックスにcategories
andという名前を付けてみましたcategory_ids
が、どちらも違いはありません。いずれかが にあるentry_params
場合、保存は失敗します。カテゴリが選択されていない場合、または( )categories
から削除した場合、保存は適切に機能しますが、明らかにカテゴリは保存されません。entry_params
@entry_attrs.delete(:category_ids)
Entry レコードが保存される前に EntryCategory レコードが作成されようとしていることが問題のように思えますか? ビルドはそれを処理するべきではありませんか?
アップデート:
要求された schema.rb の関連部分は次のとおりです。
また、カテゴリを使用してエントリを保存すると、更新アクションで (を呼び出して@entry.attributes = entry_params
) 正常に機能するため、問題は EntryCategory レコードが作成されようとした時点でエントリが存在しないことにのみ基づいているように思えます。
ruby-on-rails - 更新の問題による has_many
これを1日以上ソートしようとしてきましたが、私が見逃しているのは単純なものだと確信しています.
1 つのメイン カテゴリと 2 つのオプション カテゴリを持つことができるプロジェクトがあります。プロジェクト モデルに関連するコード:
Category クラスの関連コード:
ProjectCategory クラスから:
私からしてみれば:
そして私のコントローラーで:
OK、既存のプロジェクトを更新すると、次のエラーが発生します。
および関連するスタック トレース:
main_category に問題があり、ジェネリック クラスであるということですか? しかし、なぜ?協会はそれを正しく定義しています。
どんな助けでも大歓迎です!
ヴィクラム
ruby-on-rails - 大量の has_many :through join のデフォルト コードはレールで何ですか?
基本的な has_many :through 双方向の関係があります。
calendar_ids=
has_many :through セットアップという基本的な関数を使用して、カレンダーをイベントに割り当てたいと思っていますが、この関数をオーバーライドして、いくつかの特別な魔法を追加したいと考えています。Rails のソースを調べましたが、この関数のコードが見つかりません。誰かが私にそれを指摘できるかどうか疑問に思っています。次に、このクラスをオーバーライドして、必要なものを追加します:)