1

我正在寻找一个应用程序,允许我将多个个人资料图片与多个广告相关联。

我相信这将是一个 has_and_belongs_to_many 关联,因为我希望一个广告具有多个配置文件,并且配置文件可以属于多个广告。但是,我对这将如何与我的数据库表一起使用感到有些困惑。

如果广告在我的广告表中有一行,那么它将如何将多个个人资料图片(存储在我的个人资料表中)关联到一个 profile_id 单元格中?我是否需要设置一个单独的第三个模型和数据库表来处理关联的那些?

我也很困惑是否必须设置嵌套资源以使 HABTM 关联成功运行 - 目前我将它们分开如下:

 resources :ads
 resources :profiles

很抱歉这个基本问题,但我似乎找不到任何有助于解决我的问题的信息,而且关于 HABTM 协会的 rails 指南很短。

提前感谢您提供的任何帮助!:)

4

2 回答 2

1

当您创建 HABTM 关联时,您必须手动创建关联表。在您的情况下是 ads_profiles。

rails g migration create_table_ads_profiles

此表将包含 ad_id 和 profile_id,您现在可以在其中关联多条记录。还有一个问题,在迁移时,不要忘记添加一个 :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(复数并按约定按字母顺序排列)。该表包含两列(ad_id 和 profile_id)。使用广告对象,您可以获得配置文件 (ad.profiles),使用配置文件可以获得广告 (profile.ads)。

这会让你开始: http: //guides.rubyonrails.org/association_basics.html

~查尔斯~

于 2012-06-14T12:02:13.623 回答