我希望创建一个应用,让我可以将多个个人资料图片与多个广告相关联。
我认为这将是一个has_and_belongs_to_many关联,因为我希望广告有多个配置文件,而个人资料可以属于多个广告。然而,我对我的数据库表如何工作有点困惑。
如果广告在我的广告表中只有一行,那么它如何将多个个人资料图片(存储在我的个人资料表格中)与一个profile_id单元格相关联?我是否需要设置一个单独的第三个模型和数据库表来处理那些相关的模型?
我也很困惑是否必须设置嵌套资源以使HABTM关联成功运行 - 此时我将它们分开:
resources :ads
resources :profiles
对不起基本问题,但我似乎无法找到任何有助于我的问题的信息和关于HABTM协会的rails指南很短。
提前感谢您提供的任何帮助! :)
答案 0 :(得分:1)
创建HABTM关联时,必须手动创建关联表。在您的情况下是ads_profiles。
rails g migration create_table_ads_profiles
此表格将包含ad_id和profile_id,您现在可以在其中关联多个记录。 还有一个问题,关于迁移,不要忘记添加:id =>对它不好
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
如果您还有其他问题,请随意提问。
答案 1 :(得分:1)
您不需要嵌套资源来“使其工作”。您需要另一个表格,将您的模型连接在一起,名为ads_profiles(复数,按惯例按字母顺序排列)。该表包含两列(ad_id和profile_id)。使用广告对象,您可以获取个人资料(ad.profiles),并使用个人资料获取广告(profile.ads)。
这将帮助您入门:http://guides.rubyonrails.org/association_basics.html
〜查尔斯〜