問題タブ [has-and-belongs-to-many]

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

ruby-on-rails - 複雑なフォーム - 単一のフォームで複数のモデルを管理する - (第 3 度の狂気)

以下のコードの 2 番目のブロックで問題を切り分けました(すべての詳細が必要ない場合): I can create new users from the account model. アカウント モデルからこれらのユーザーの役割を割り当てることができません。fields_for を使用していますが、role_ids をロール モデルに割り当てようとすると、このメソッドは機能しません。私のデータベースは次のように設定されています:

  1. アカウント モデル has_many :ユーザー

  2. ユーザー モデル has_and_belongs_to_many : roles、 belongs_to : accounts

  3. 役割モデル has_and_belongs_to_many :ユーザー

ビュー/アカウント/new.html.erb

account.rb モデルの関連付けられたセッター メソッド: スタックトレースを使用して、34 行目の "undefined method `roles' for #" に問題を切り分けました。

最後に、アカウント コントローラー内で、ユーザーとロールをメモリ内に構築します。

コンソールからの @accounts.users.first.roles.build 証明:

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

ruby-on-rails - フォームの作成アクションを使用して、結合テーブルを操作することはできますか?

*すべてのコードを表示するには、リンクをたどってください

新しい「アカウント」を作成しています。新しい各アカウントhave_many:users。ユーザーは_and_belong_to_manyロールを持っています。新しいアカウントフォームで、既存の役割を新しいユーザーに割り当てようとしています。通常は簡単なプロセスですが...

ユーザーとロールの間のhave_and_belong_to_manyの関連付けは、ユーザーとロールが結合テーブルによって関連付けられていることを意味します。使用するモデルがありません。ですから、これをコーディングする方法がわかりません。ここで(回答で)概説されている方法を使用して新しい役割を作成することはできますが、アカウントモデルを介して既存の役割を新しいユーザーに割り当てることはできません。

SQlに相当するものは、次のようになりますSQL (0.1ms) INSERT INTO "roles_users" ("role_id", "user_id") VALUES (6, 29)。Railsで作成された新しいユーザーのID、つまりVAULES(6、ID)のように機能するために29が必要な場合

現在のコード:(新しい役割を作成します)

Account.rb

User.rb

account_controller.rb

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

ruby-on-rails - チェックボックスの値をHABTM関係で更新-Rails

Railscastエピソード#17のチェックボックスの例でhas_and_belongs_to_many関係を使用してきました。いくつか問題がありましたが、更新ボタンが機能しないことを除いて、すべてがスムーズに機能しています。

編集ビューは次のようになります

そしてコントローラーで私は持っています...。

ボタンはリダイレクトを実行するイベントではありません...だから私は何が起こっているのかわかりません。私のフォーム作成にこれを台無しにする何かがありますか?ボタンを作成して、モデルの更新などでコントローラーのメソッドにアクセスさせる方法が正確にはわかりません。

私は助けを求めて周りを見回し、おそらくそれはattr_accessibleのせいであると思ったので、=>を追加しました

私のユーザーモデルにはまだ何もありません...なぜ私のフォームが送信されないのか分かりますか?

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

cakephp - HasAndBelongsToMany モデルを挿入する必要があるときに CakePHP が更新されている

小さな問題があります。タグと質問のあるサイトを作っています。Question モデル、Tag モデル、QuestionsTag モデルがあり、すべてがうまく調和しています。ユーザーが何かを尋ねると、stackoverflow.com のようにスペースで区切られたフィールド (foo bar baz) にタグを入れます。

ここで、タグが既に存在するかどうかを確認し、タグをデータベースに入力して必要な関連付けを行うコードを次に示します。

問題はこれです。質問のIDは1で、IDが1、2、3のタグが必要です。

2 番目と 3 番目の保存が呼び出されると、Cake は question_tags テーブルにすでに ID 1 の質問があることを確認し、タグを更新するだけです。

しかし、これは正しくありません。そのテーブルには、同じ ID を持つ多くの質問があり、それらはそれらに属する異なるタグを参照しているためです。

それで、これを防ぐ方法はありますか?save メソッドが更新されないようにしますか?

ありがとうございました!

0 投票する
4 に答える
3264 参照

ruby-on-rails - has_and_belongs_to_many関係を持つacts_as_list

私はacts_as_habtm_listという古いプラグインを見つけましたが、それはRails1.0.0用です。

この機能はacts_as_listに組み込まれていますか?情報が見つからないようです。

基本的に、artists_eventsテーブルがあります-モデルはありません。関係は、:has_and_belongs_to_manyを指定する2つのモデルを通じて処理されます

この状況で順序を指定するにはどうすればよいですか?

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

cakephp - CakePHP HABTM:1つのアイテムを編集すると、HABTM行が再作成され、余分なデータが破棄されます

CakePHPでのHABTMの関係に問題があります。

私はそのような2つのモデルを持っています:DepartmentHABTM Location。1つの大企業には多くの建物があり、各建物は限られた数のサービスを提供しています。各建物には独自のWebページもあるため、HABTMの関係自体に加えて、各HABTM行にはurl、ユーザーがアクセスして、関心のあるサービスとその建物での動作に関する追加情報を見つけることができるフィールドもあります。に興味がある。

私は次のようにモデルを設定しました:

コントローラーはまったく面白くありません。

問題: の名前を編集すると、それにリンクされていたLocationすべてのが空のURLで再作成されます。モデルはuniqueがtrueであると指定しているため、これにより、すべての新しい行が古い行を上書きし、基本的にすべてのURLが破棄されます。DepartmentsLocationLocation

私は2つのことを知りたいです:私はこれを止めることができますか?もしそうなら、どのように?

そして、あまり技術的ではなく、より気まぐれなメモで:なぜこれが起こるのですか?Cakeでフィールドを編集すると、非常に多くの問題が発生するのは奇妙に思えます。phpMyAdminを簡単に調べて、Locationそこで名前を編集し、期待どおりの結果を得ることができる場合です。行のフィールドを編集しているだけなのに、CakePHPがHABTMデータに触れるのはなぜですか?外部キーすらありません!

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

cakephp - CakePHP - HABTM - 複数のタグを複数のポイントに追加する

複数のタグで複数の「ポイント」に「タグ付け」しようとしています。シングルポイントのタグ付けに成功しています。残念ながら、別のポイントで 'test2' などのタグをタグとして使用しようとすると、'unique' が false に設定されている場合、または 'unique' が true に設定されている場合、重複エントリ エラーが発生します。 「test2」の他のすべてのポイントのタグを削除し、新しいタグを 1 つ作成します。

投稿データには次のものがあります。

私のタグモデルでは、これがあります:

私も「ユニーク」をtrueに設定してこれを試しました。残念ながら、これにより、結合テーブル (「points_tags」) 内の「Test2」の他のインスタンスがすべて削除されます。

save() と saveAll() の両方を使用してこれを試しました。どちらも私にこのエラーを与えています:

警告 (512): SQL エラー: 1062: キー 'MAN_ADD' の重複エントリ '4b7af6d7-787c-4f10-aa49-2502c0a80001-4b47c66f-a130-4d12-8ccd-608' .php、527行目] クエリ: INSERT INTO points_tags( tag_id, point_id, id) VALUES ('4b7af6d7-787c-4f10-aa49-2502c0a80001','4b47c66f-a130-4d12-8ccd-60824051e4b0','4b7b39f3-46f8-4743-3800015 ')

考え????

提案????

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

cakephp - CakePHPとHABTMのタグフィルタリング

私はCakePHPHABTMの関係に少し取り組んでおり、一見単純なタスクを実行しようとして立ち往生しています。私はたくさんのキャンプとたくさんのニュースアイテムを持っています。各NewsItemは、どのキャンプにも関連している可能性があるため、ユーザーがNewsItemを作成するときに、アイテムがどのキャンプに対応しているかを確認します。それがアイデアです。

それで...

NewsItemsビューにキャンプフィルタリングを組み込みたいと思います。つまり、キャンプ「A」とキャンプ「B」に関連するすべてのニュースアイテムを表示したいと思います。

「検索」および「ページ分割」機能に条件を追加すると、魅力のように機能します。

でも...

NewsItemが複数のキャンプに属している場合、リストに複数回表示されます。したがって、キャンプ「A」とキャンプ「B」に属するすべてのNewsItemを検索するように指示すると、キャンプ「A」とキャンプ「B」に属するNewsItemが2回表示されます。

デバッグクエリは次のようになります。

SELECT NewsItemidNewsItemuser_idNewsItemheadingNewsItembodyNewsItemmodifiedUserfirst_nameFROM news_itemsAS NewsItemLEFT JOIN usersAS UserON(NewsItemuser_id= Userid)LEFT JOIN camps_news_itemsAS CampsNewsItemON(CampsNewsItemnews_item_id= NewsItemid)WHERE CampsNewsItemcamp_idIN(1、5)ORDERBY NewsItemmodifieddesc LIMIT 10

SELECT CampidCampnameCampcreatedCampmodifiedCampsNewsItemcamp_idCampsNewsItemnews_item_idFROM campsAS CampJOIN camps_news_itemsAS CampsNewsItemON( 。IN( 6、6、7、8 )AND CampsNewsItem。= 。)WHERE 1 = 1news_item_idCampsNewsItemcamp_idCampid

phpコードは次のようになります。

洞察をありがとう!

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

ruby-on-rails - rails HABTMの加入と不便

モデル間の HABTM 関連付けが機能しています

投稿とユーザー... posts_users テーブルは宣伝どおりで、どちらも model.rb に必要な has_and_belongs_to_many を持っています

そして、それを使用User.find(1).postsすると、有効なユーザー名を持つすべての投稿が見つかります

私の質問は、この状況にどう対処するかです。

使いたい

user.posts.find(1234)または実際にはコントローラーからの式:

他のユーザーが飛び回るのを防ぐため。ただし、この使用法にはいくつかの奇妙な結果があります。それは機能しますが、ID が特定の投稿またはすべての投稿の有効な ID である代わりに、1234 の実際の ID ではなく、1 の ID を返します。したがって、次のようにさらに結合します。

動作しないか無効です。

all過去に他の厄介な状況で時々うまくいったので、私はいくつかの場所を適切な方法で投げてみました. まだいくつかの見知らぬ出会いがあります。

user.posts.all.first動作し、正しい ID を返します! しかし、最初の使用はあまり役に立ちません。 user.posts.all.find(6933)戻り値#<Enumerable::Enumerator:0x105343630>

(:post_id => 1234)常に 1 の IDを返すさまざまな組み合わせも試しました。

何か案は?

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

cakephp - CakePHP HABTM 関係一覧

HABTM 関係のリスト (管理セクション用) を作成しようとしているときに、かなりの問題があります。契約は次のとおりです。

パーミッション: ID、名前; ユーザー: ID、ユーザー名; permissions_users: パーミッション_id、user_id

Permission HasAndBelongsToMany User

次のようなリストを作成したいと思います。

User.id | User.username | Permission.id | Permission.name
1 | Jack | 1 | posts
1 | Jack | 2 | comments
2 | Mark | 1 | posts
3 | Kate | 3 | tags

のようなもの$this->Permission->User->find('all');(またはその逆) は実際には機能しません。これは、 の多くの権限をフェッチするJackためpostsです。

私が欲しいのは、次のような配列を取得することです:

[0] = > array(
[User] => array([id] => 1 [username] => Jack)
[Permission] => array([id] => 1 [name] => posts)
)
[1] = > array(
[User] => array([id] => 1 [username] => Jack)
[Permission] => array([id] => 2 [name] => comments)
) ...

何か案は?