問題タブ [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 関係は、ビジネスの知覚において正しくも論理的でもないようです。beens_to_many のようなものが必要ですか?
私の状況はこんな感じです。会社には多くのユーザーがいて、ユーザーは多くの会社に所属している場合があります。そして、現在の実装は以下のようなものです。
それは機能しますが、「ユーザーは多くの会社を持っています」は論理的に意味がありません。これは、belongs_to_many company のようなものに違いありません。has_and_belongs_to_many を使用する必要がありますか?
これらの関係を表す正しい方法を教えてください。
ruby-on-rails - has_many :through と in_place_edit の使用方法
キャンペーンと連絡先の 2 つのモデルがあります。
キャンペーンには多数の連絡先があります。
連絡先には、_多くのキャンペーンがあります。
現在、各連絡先には contact.date_entered 属性があります。キャンペーンは、その日付を、キャンペーンに属するさまざまなイベントのカウントダウンの日付として使用します。
ただし、特定の連絡先のキャンペーンを X 日間遅らせる必要がある場合があります。この例では、campaigncontact.delaydays = 10 です。
場合によっては、特定の連絡先に対してキャンペーンを完全に停止する必要があるため、今のところ、campaigncontact.delaydays = 1 に設定します (これに大きな問題はありますか?)
デフォルトでは、キャンペーンの連絡先が存在しないと想定しています (しかし、それがどのように機能するかわかりませんか?)
だからここに私がやろうとしたことがあります:
では、ここで質問です。上記は正しいですか。その場合、ユーザーが特定の連絡先のキャンペーンの遅延を編集できるようにするにはどうすればよいですか?
今のところ、連絡先ビューから行いたいと思います。
これは私が試したものです:
連絡先コントローラーで (?)
そしてビューで
どうすれば正しくなりますか?
ruby-on-rails - has_many:throughの結合モデルでnamed_scopesを使用する
表面が非常にシンプルなもので、壁に頭をぶつけてきました。次の簡略化されたモデルがあるとしましょう。
user.rb
membership.rb
group.rb
簡単ですよね?したがって、私がやりたいのは、結合モデルの既存の名前付きスコープを使用して、ユーザーがアクティブになっているすべてのグループのコレクションを取得することです。User.find(1).groups.activeに沿った何か。明らかに、これは機能しません。
User.find(1).membrships.active.all(:include => :group)
しかし、現状では、メンバーシップとグループのコレクションを返すようなことをする必要があります。私はそれを望んでいません。
Membershipモデルの:active named_scopeを複製する条件で、Userモデルに別のhas_manyを追加できることは知っていますが、それはひどいことです。
だから私の質問:モデル間を直接トラバースするときに中間の名前付きスコープを使用する方法はありますか?どうもありがとう。
ruby-on-rails - accept_nested_attributes_for の使用方法を教えてください。
簡潔にするために質問を編集し、行ったことを更新します。
会社の複数の住所を持つモデルを作成し、単一の住所を連絡先に割り当て、連絡先の作成または編集時にそれらを割り当てるにはどうすればよいですか?
新しい連絡先の作成時にアドレスを追加できるように、ネストされた属性を使用したいと考えています。最初から入力するのではなく、既存のアドレスからドロップダウンするオプションが必要な場合があるため、そのアドレスは独自のモデルとして存在します。
私はそれを機能させることができないようです。nil:NilClass エラーに対して未定義のメソッド「build」が表示されます
連絡先の私のモデルは次のとおりです。
これが住所の私のモデルです:
新しい連絡先を作成するときに、会社に属する他の連絡先に属するすべてのアドレスにアクセスしたいと思います。だからここに私が会社を表す方法があります:
これは、View for _form for Contact にフィールドを作成して、誰かが新しい Contact を作成するときに、住所を Address モデルに渡し、その住所を Contact に関連付ける方法です。
編集しようとすると、Street 1 のフィールドが空白になります。また、show.html.erb の値を表示する方法がわかりません。
下部にあるのは私のエラー コンソールです。アドレス テーブルに値を作成できないようです。
私の連絡先コントローラーは次のとおりです。
エラー コンソールのスニペットを 次に示します。属性を投稿していますが、アドレス テーブルで作成していません。
ContactsController#create の処理 (2010-05-12 21:16:17 の 127.0.0.1 の場合)
[POST] パラメータ: {"commit"=>"Submit", "authenticity_token"=>"d8/gx0zy0Vgg6ghfcbAYL0YtGjYIUC2b1aG+dDKjuSs=", "contact"=>{"company_name"=>"Allyforce", "title"=>" "、"campaign_id"=>"2"、"address_attributes"=>{"street1"=>"abc"}、"fax"=>""、"phone"=>""、"last_name"=>""" , "date_entered"=>"2010-05-12", "email"=>"", "first_name"=>"abc"}}
Company Load (0.0ms)[0m [0mSELECT * FROM "companys" WHERE ("companys"."name" = 'Allyforce') LIMIT 1[0m
Address Create (16.0ms)[0m
[0;1mINSERT INTO "addresses" ("city", "zip", "created_at", "street1", "updated_at", "street2", "state") VALUES(NULL, NULL , '2010-05-13 04:16:18', NULL, '2010-05-13 04:16:18', NULL, NULL)[0m連絡先の作成 (0.0ms)[0m
[0mINSERT INTO "contacts" ("company", "created_at", "title", "updated_at", "campaign_id", "address_id", "last_name", "phone", "fax" , "company_id", "date_entered", "first_name", "email") VALUES(NULL, '2010-05-13 04:16:18', '', '2010-05-13 04:16:18', 2, 2, '', '', '', 5, '2010-05-12', 'abc', '')[0m
ruby-on-rails - Ruby on Rails:has_many through frustrations
has_many throughでイライラする問題が発生しています。つまり、throughモデルは保存するまで作成されないという事実です。残念ながら、親を保存する前に、これらのモデルにデータを設定する必要があります。
緩い設定は次のとおりです。
保存する前に「wtf」にアクセスする必要があることを除いて、すべて問題ありません。
f = Foo.new =>#
f.bars=>[バーのリスト]
ここに空のリスト
f.wtfs => []
f.save!=>真
今私はものを手に入れます
f.wtfs=>[もののリスト]
私はこれを行うwtfsを明示的に作成することさえしました:
これにより、f.wtfsは入力されますが、バーは入力されません。保存して取得すると、予想されるwtfsの2倍になります。
誰かアイデアはありますか?
ruby-on-rails - 一方向に持っている-多く-スルー
カテゴリ、サブカテゴリ、および製品モデルがあります。
私は持っています:
のようなものを持つ方法はありますか
?
「subcategory」はproductに属していないため、「normal」レールの方法は機能しません。そのため、productにはsubcategory_idフィールドがありません。代わりに、クエリは次のようなものにする必要があります
それを行う方法はありますか?
ありがとう、
ニコラスホックイサザ
ruby-on-rails - has_many :through レコードを 2 回作成する
私はモデルを持っています
したがって、質問を作成時のテストにバインドしようとすると、次のようになります。
6 つの SQL クエリがあり、testing_questions に 6 つのレコードが作成されます。なんで?
ruby-on-rails - Rails - :has_many :through から情報を見つけるためのロジックが必要です!
私は3つの関連するテーブルを持っています。ユーザー、オーダー、およびビューデータ
各ユーザーは多くの注文を持っていますが、同時に、各ユーザーは他のユーザーに属する特定の他の注文を表示できます。したがって、Viewables には と の属性がuser_id
ありorder_id
ます。
注文には
:has_many :Users, :through => :viewables
オーダーのビューから検索することはできますか? だから何か
@viewable_orders = Orders.find(:all, :conditions => ["Viewable.user_id=?",1])
user_id=1 で表示可能な注文のリストを取得します。(これは機能しません。それ以外の場合は質問しません。:( ) 現在のユーザー (ログインしているユーザー) が他の人の注文のリストを表示できるサイドバーのようなものを実行できるという考えです。たとえば、
表示できる注文を持っている他の 3 人のユーザーは、最終的に次のように表示されます。
- ジャック (2)
- 基本オーダー (registry_id: 1)
- 新規注文 (registry_id: 29)
- エイミー (4)
- ショートオーダー (registry_id: 12)
- ジル (5)
- ハードウェア注文 (14)
- ピンクオーダー (17)
- ソフトウェア注文 (76)
(括弧内の数字は、それぞれの user_id または registry_id です)
したがって、現在のユーザーが見つけることができるすべての注文のリストを見つけるには (現在のユーザーの user_id が 1 であると仮定)、次のようにします。
これにより、上記の 6 つのレジストリのコレクションが得られます。これを行う最も簡単な方法は、
しかし、それは長いリストでは見苦しくなります。
ありがとう!
ruby-on-rails - 多形has_manyの重複を防ぐレール:関連付けを介して
アソシエーションを通じて多形has_manyのエントリの重複を防ぐ簡単な、または少なくともエレガントな方法はありますか?
タグ付けできるストーリーとリンクの2つのモデルがあります。ここではプラグインを使用しないという意識的な決断をしています。私は実際に起こっていることすべてを理解し、私が完全に理解していない他の誰かのコードに依存しないようにしたいです。
私の質問が何になっているのかを確認するために、コンソールで次のコマンドを実行した場合(ストーリーオブジェクトとタグオブジェクトがデータベースにすでに存在していると仮定)
私のタギング結合テーブルには2つのエントリが追加され、それぞれに同じ正確なデータがあります(tag_id = 1、taggable_id = 1、taggable_type = "Story")。それは私にはあまり適切ではないようです。そこで、これを防ぐために、タグ付けモデルに次のものを追加しました。
ほぼ意図したとおりに機能しますが、ストーリーまたはリンクに重複するタグを追加しようとすると、ActiveRecord :: RecordInvalid:Validationfailed例外が発生します。リストに関連付けを追加すると、保存と呼ばれるようです。(sansを保存するのではなく!)何かがうまくいかなかった場合に、単にfalseを返すのではなく、例外を発生させるメソッド。それは私がしたいことではありません。新しいタグを追加する試みはすべてtry/catchで囲むことができると思いますが、それは例外を予期してはならないという考えに反し、これは私が完全に期待していることです。
重複が存在するためにオブジェクトをデータベースにサイレントに保存しないだけの場合に例外を発生させない、これを行うためのより良い方法はありますか?
ruby-on-rails - レール:双方向has_many:関係を介して
Railsアプリケーションには3つのモデルがありGame
ます。プレイされているゲームのインスタンスを表します。Player
ゲームの参加者のインスタンスを表します。User
ゲームに参加できる登録者を表します。
それぞれGame
が多数を持つことができPlayers
、それぞれが多数を持つUser
ことができますPlayers
(1人の人が一度に複数のゲームに参加できます)。しかし、それぞれPlayer
が正確に1つGame
であり、正確に1つを表しUser
ます。したがって、現在の私の関係は次のとおりです。
...当然、players
テーブルには列がgame_id
ありますが、外部キーはありません。user_id
games
users
Game
また、それぞれが多くのUsers
演奏をしているという事実を表現したいと思います。そしてそれぞれが彼らが遊んでUser
いる多くを持っています。Games
どうすればよいですか?追加するだけで十分ですか