[解決済み] railsでhas_many :through アソシエーションにレコードを追加する方法
2022-12-12 08:21:31
質問
class Agents << ActiveRecord::Base
belongs_to :customer
belongs_to :house
end
class Customer << ActiveRecord::Base
has_many :agents
has_many :houses, through: :agents
end
class House << ActiveRecord::Base
has_many :agents
has_many :customers, through: :agents
end
どのようにすれば
Agents
のモデルを
Customer
?
これがベストな方法でしょうか?
Customer.find(1).agents.create(customer_id: 1, house_id: 1)
上記はコンソールからは問題なく動作しますが、実際のアプリケーションではどのように実現すればいいのかわかりません。
顧客のためにフォームが入力され、そのフォームには
house_id
を入力として受け取るとします。その場合、コントローラで次のようにすればよいでしょうか。
def create
@customer = Customer.new(params[:customer])
@customer.agents.create(customer_id: @customer.id, house_id: params[:house_id])
@customer.save
end
全体として、私は、レコードを
has_many :through
テーブルのレコードを追加する方法がわかりません。
どのように解決する?
単純に、こうすればいいのではないでしょうか。
@cust = Customer.new(params[:customer])
@cust.houses << House.find(params[:house_id])
あるいは、お客さんのために新しい家を作るとき。
@cust = Customer.new(params[:customer])
@cust.houses.create(params[:house])
ID経由で追加することも可能です。
@cust.house_ids << House.find(params[:house_id])
関連
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】Webpacker::Manifest::MissingEntryError【クローズド
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Rails ExecJS::ProgramError in Pages#home?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController