問題タブ [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.

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

ruby-on-rails - ActiveRecord を使用して 5 つのネストされたテーブルの結果を検索する

ユーザー モデル (:name, :password, :email)、イベント モデル (:name, :etc)、Interest モデル (:name) があります。

次に、UsersInterests と EventsInterests の 2 つの結合テーブルを作成しました。それぞれが主キーを含まず、それぞれ user_id/interest_id と event_id/interest_id のみで構成されています。

私はActiveRecordを使用して、EventsInterestsのinterest.id = UsersInterestsのinterest.idであるすべてのイベントのリストを照会しようとしています

Nested Loop Pluginで has_many と belongs_to の関係を使用しています

私のモデルはそうのように見えます=>

user.rb

event.rb

興味.rb

users_interests.rb

events_interests.rb

@user= User.find(1) の場合、ユーザーが関心を持つイベントをどのようにクエリしますか?

私はこれを思いついた => @events.find(:all, :conditions => EventsInterests.interest_id = UsersInterests.interest_id) ??

しかし、私はエラーが発生します

うーん..wtf? 助けてください....私はこれに4日間ほど取り組んでいます

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

ruby-on-rails - レールでformtasticを使用して関連付け(has_many)モデルのフィールドを使用する

いろいろ検索してみましたが、思い通りにできません..ここに私の問題があります。

Movingresourcesなどの追加フィールドが含まれますquantity。「請求書」のビューに取り組んでいます。書くだけで関係全体を簡素化するformtasticのおかげで

そして、本当に素敵なチェックボックスリストを取得します。しかし、これまでのところわかっていないのは、「movingresource」の追加フィールドを、そのモデルの目的のフィールドの隣または各チェックボックスの下で使用するにはどうすればよいですか?

主にオブジェクトの配列を手動でループして適切なフォームを作成し、form.inputs 部分で :for を使用するかどうかにかかわらず、さまざまなアプローチを見ました。しかし、これらの解決策はどれもきれいではありませんでした (たとえば、必要なオブジェクトが構築または生成されておらず、それらの生成が混乱を引き起こしたため、編集ビューでは機能しましたが、新しいビューでは機能しませんでした)。

これに対するあなたの解決策を知りたいです!

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

ruby-on-rails - has_many から行数を取得するにはどうすればよいですか :uniq => true との関係を介して

これは私のモデルです:

すべての関係は機能していますが、解決策が見つからないという追加の要件があります。

Assetクラスでこの関係を検討してください

Asset.find( :first ).tags を呼び出すと、期待どおりにタグの配列が返されますが、:uniq => true が指定されていない場合に行が何回表示されるかを示す count 属性を各タグに含める必要があります。

例えば。複数のユーザーが同じタグをアセットに適用できます。タグ名と適用ユーザー数を表示したい。

0 投票する
8 に答える
35616 参照

ruby-on-rails - Ruby on Railsで関連付けを介してhas_manyを注文するにはどうすればよいですか?

次の AR モデルが与えられた場合、タスクのハンドルが与えられたときにユーザーを姓のアルファベット順に並べ替えたいと思います。

タスクを取得してから、割り当てられたユーザーに移動し、ユーザー リストをアルファベット順に並べ替えたいと思います。

:order次のように句を追加できるはずだと考え続けていhas_many :users, :through => :assignmentsます。

ただし、これは機能しません。

last_nameタスクが与えられたときにユーザーを並べ替えるにはどうすればよいですか?

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

ruby-on-rails - :has_many:throughの正しいルーティング

2つのオブジェクト間に多対多の関連付けを設定しようとしています。私はいくつかのチュートリアルを経て、モデルを正しくセットアップすることができました。私の問題は、完全な関係を表示できるように正しいルートを設定するのに問題があることです...特定のカテゴリ(/ category / 1 / products /) の製品のみを表示するようなものです

これが私がモデルを生成した方法です:

スキーマは次のとおりです。

これが3つのモデルオブジェクトです。

コンソールからカテゴリに製品を追加できるため、非常にシンプルで、すべてが正常に機能しているようです。

私はroutes.rbファイルを更新する必要があると確信していますが、それを行う正しい方法が本当にわかりません。これは私がroutesファイルに入れたものです:

カテゴリ「/categories/ 7 / products /」で商品を表示しようとすると、すべての商品が一覧表示されます。これは、ルートが正しく設定されており、(インデックスを作成する代わりに)製品コントローラーでカスタムアクションを作成する必要があることを意味しますか?私はここで何を間違っているのですか...私は閉じていますか、それとも離れていますか?!?

ありがとう

0 投票する
7 に答える
35989 参照

ruby-on-rails - accept_nested_attributes_for with has_many => :through オプション

リンクとタグの 2 つのモデルがあり、3 番目の link_tags を介して関連付けられています。次のコードは、私の Link モデルにあります。

協会:

links_controller アクション:

new.html.erb からコードを表示:

そして対応するパーシャル:

次のコード行は、リンク コントローラーの作成アクションでエラーをスローします。

エラー:Tag(#-621698598) expected, got Array(#-609734898)

has_many => :through ケースで必要な追加の手順はありますか? これらは、基本的な has_many ケースの唯一の示された変更のようです。

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

ruby-on-rails - has_many :through 、自己参照関連

私は自己参照の関連付けに問題があります。モデルは ma に left_chunks および right_chunks メソッドのモデルの配列を与える必要がありますが、毎回空の配列を取得します

起源

./script/console からの出力

チャンクが結合されていないのはなぜですか?

コード実行後のデータベース

何か案は ?

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

ruby-on-rails - has_many:through結合テーブルの値へのアクセス

メンバーシップ結合テーブルを介してグループのメンバーであるユーザーがいます。その結合テーブルの属性の1つは「管理者」です。グループのメンバービュー内でチェックを実行し、各メンバーをループして、それらが管理者であるかどうかを確認しようとしています。

ビューで私は次のことを試みました:

私もコントローラーでこれを試しました:

しかし、運はありません。何かご意見は?

更新-以下のように、ユーザーモデルにメソッドを配置します。

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

ruby-on-rails - has_many :through 関係で結合モデルにアクセスする方法

has_many => :through以下に詳述するように、 を使用した典型的な多対多の関係があります。

ここで行おうとしているのは、メンバーに役割を割り当てられるようにすることです。各メンバーの役割にはスコープがあり、デフォルトでは「すべて」に設定されていますが、必要に応じて「スポーツ」に設定できます。スコープがスポーツに設定されている場合は、sport_id も取得します。これにより、そのロールの評価を特定のスポーツに制限できます (つまり、すべてのスポーツのチームではなく、そのスポーツのチームのみを管理できます)。シンプルに聞こえます。

私はupdate_member_roles次のようなアクションを設定しました:

上記は十分にうまく機能し、適切な member_roles を非常にうまく設定します...しかし、私は MemberRole モデルではなく Role モデルに取り組んでいるので、結合モデルにアクセスして を設定する方法について、ちょっと行き詰まっています:スコープと:sport_id.

ここでのポインタは大歓迎です。

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

mysql - RailsのHasManyリレーションシップの結合テーブルを削除します

Railsでロールベースのアクセス制御システムを作成する方法を考えています。私はこれらの素晴らしいプロジェクトも(とりわけ)見ました:

私の質問は、すべての結合テーブルが本当に必要なのかということです。リレーションシップ内のテーブルの1つに値が少ない(たとえば100未満)場合、結合テーブルをその小さなテーブルとマージすることはできませんか?)これが意味します...必要なものは次のとおりです。

モデル

  • ユーザー
  • グループ
  • 役割
  • 許可
  • UserRoles / RolesUsers
  • GroupRoles
  • メンバーシップ(GroupUsers)
  • RolePermissions

そんな感じ...

RoleRequirementが機能する方法は、rolesテーブルとroles_users結合テーブルを作成することです。これは、アプリケーションに合計20の可能な役割がある場合、次のことを意味します。

  • 20行のロールテーブル
  • n行のRolesUsersテーブル。

つまり、役割ごとにユーザーを検索するたびに、参加する必要があります。ただし、アプリケーションにはロールが数個しかないため、この移行を置き換えてみませんか。

これで...

これにより重複が発生します(たとえば、「admin」という名前のロールが大量にあります)が、スペースが安価であり、Role.uniqueすべての一意のロールを検索するようなメソッドを作成できるため(20行のテーブルを削除するため)、なぜ人々は作成するのですか?結合テーブル?

パーミッションについても同じです。開始するパーミッションは4つだけですcreate read update delete。したがって、パーミッションテーブルとroles_permissionsテーブルは必要ありません。CRUDパーミッションを複製して、パーミッションテーブルにrole_idを含めることができます。rolesグループと同じように、テーブルに多態的な列がある場合は、グループロールは必要ありません。

これを行うための推奨される方法は何ですか?

提案された移行のスニペットを次に示します