2016-06-21 85 views
1

我有一个事实表,带着一帮企业客户:Rails的PG HABTM关系

bus_id, sales, date 
    1, $986, 1/1/2016 
    1, $543, 1/2/2016 
    2, $921, 1/1/2016 
    2, $345, 1/2/2016 

我想创建一个表的机会

bus_id, opportunity 
    1,  "Upsell" 
    1, "Upsell More" 

如何创造的机会表一个has_and_belongs_to_many两者之间的关系,以便它们在bus_id外键上链接?

+0

你是问有关协会或迁移或两者兼而有之? –

+0

如果迁移只是上面的列名称和数据类型,那么就是关联。我最关心的是bus_id不是任何一个表中的PK? – HoosierCoder

+0

解释用例 – DennisCastro

回答

1

首先创建一个连接模型为他们:

bin/rails g migration create_businesses_opportunities 

现在,到迁移文件,并确保它看起来是这样的:

class CreateBusinessesOpportunities < ActiveRecord::Migration 
    def change 
    create_table :businesses_opportunities do |t| 
     t.belongs_to :opportunity, index: true 
     t.belongs_to :business, index: true 
    end 
    end 
end 

然后:

型号/ business.rb

has_and_belongs_to_many :opportunities 

型号/ opportunity.rb

has_and_belongs_to_many :businesses 

属性将在IDS存储到阵列中的每个模型是什么,这将做的是增加一个“动态”。

例子:

#To have an opportunity belong to multiple businesses, say IDs 1, 2, and 3 
@opp = Opportunity.find(1) 
@opp.update_attribute :business_ids, [1,2,3] 
@opp.businesses 
    # => will now show the three businesses 

#The same works for associating a business to multiple opportunities, just the other way around 
@busn = Business.find(1) 
@busn.update_attribute :opportunity_ids, [1,2,3] 
@busn.opportunities 
    # => will now show the three opportunities 
+1

控制器用法也很好的答案,谢谢! – HoosierCoder