1

複数のプロフィール画像を複数の広告に関連付けることができるアプリを作成したいと考えています。

広告に複数のプロファイルを持たせ、プロファイルを複数の広告に含めることができるようにするため、これはhas_and_belongs_to_manyの関連付けになると思います。ただし、これがデータベーステーブルでどのように機能するかについては少し混乱しています。

広告の広告テーブルに単一の行がある場合、単一のprofile_idセルに複数のプロファイル画像(プロファイルテーブルに保存されている)をどのように関連付けますか?関連付けられているものを処理するために、個別の3番目のモデルとデータベーステーブルを設定する必要がありますか?

また、HABTMアソシエーションを正常に機能させるためにネストされたリソースを設定することが不可欠かどうかについても混乱しています。現時点では、それらを次のように分離しています。

 resources :ads
 resources :profiles

基本的な質問で申し訳ありませんが、私の問題に役立つ情報が見つからないようです。HABTMの関連付けに関するレールガイドはかなり短いです。

あなたが提供できるどんな助けにも前もって感謝します!:)

4

2 に答える 2

1

HABTMアソシエーションを作成するときは、アソシエーションテーブルを手動で作成する必要があります。あなたの場合はads_profilesです。

rails g migration create_table_ads_profiles

このテーブルにはad_idとprofile_idが含まれ、複数のレコードを関連付けることができます。もう1つの落とし穴は、移行時に:id=>falseを追加することを忘れないでください

class CreateTableAdsProfiles < ActiveRecord::Migration
  def change
    create_table :ads_profiles, :id => false do |t|
      t.integer :ad_id
      t.integer :profile_id
    end
  end
end

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-06-14T11:56:21.240 に答える
1

「機能させる」ためにネストされたリソースは必要ありません。モデルを接続するads_profilesという名前の別のテーブルが必要です(複数形および慣例によりアルファベット順)。テーブルには2つの列(ad_idとprofile_id)が含まれています。広告オブジェクトを使用するとプロファイル(ad.profiles)を取得でき、プロファイルを使用すると広告(profile.ads)を取得できます。

これで始められます:http://guides.rubyonrails.org/association_basics.html

〜チャールズ〜

于 2012-06-14T12:02:13.623 に答える