2016-08-02 127 views
0

我有兩個表:提供和測試。我們可以爲同一對錶有多個連接表嗎?

但我需要有三個連接表,如offers_tests_1,offering_tests_2和offers_tests_3。這是因爲業務需求,一個報價可以有三個測試組合(包)。

我們可以在Rails中做到這一點嗎?對於一個連接表,我可以在視圖中使用具有f.collection_select標記的模型中的has_and_belongs_to_many關聯來實現,其中:multiple => true。

最壞的情況下,我可以用相同的數據設置三個表tests_1,tests_2和tests_3。我想避免這種情況。

回答

0

是的,你可以 你可以在模型中定義你的關係。喜歡這個。

在模型Offer.rb

has_many :offers_tests_1 
has_many :offers_tests_2 
has_many :tests, through: :offers_tests_1 
has_many :tests, through: :offers_test_2 

模型Tests.rb

has_many :offers_tests_1 
has_many :offers_tests_2 
has_many :offers, through: :offers_tests_1 
has_many :offers, through: :offers_test_2 

享受

+0

我用這種方法去,但風景依然一個問題。我有以下 - '<%= form_for(@offer)do | f | %> <%= f.fields_for:offers_tests_1 do | ot | %> <%= ot.collection_select(:爲test_id,Test.all,:ID,:屬性,{include_hidden:假}:多=>真)%> <% end %> <% end %>' 我的錯誤是 - - 字段沒有默認值 – user1575148

+0

not fields_for:offers_tests_1 use fields_for:tests –

+0

在collection_select中,我可以指定關聯嗎?我有三個關聯和三個連接表。如果我使用fields_for:tests,Rails將數據插入到第三個連接表中。 – user1575148

相關問題