2016-08-02 4 views
0

У меня есть две таблицы: предложения и тесты.Можем ли мы иметь несколько таблиц соединений для одной и той же пары таблиц?

Но мне нужно иметь три таблицы объединений, например, offers_tests_1, offers_tests_2 и offers_tests_3. Это связано с требованиями бизнеса, что предложение может иметь три комбинации (пакеты) тестов.

Можем ли мы сделать это в Rails? Для одной таблицы соединений я мог бы сделать это, используя ассоциацию has_and_belongs_to_many в моделях с тегом f.collection_select в представлении, с помощью: 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,: идентификатор,: свойство, {include_hidden: ложь},: множественный => истина)%> <% end %> <% end %> ' Ошибка у меня есть - - Поле не имеет значения по умолчанию – user1575148

+0

not fields_for: offers_tests_1 use fields_for: tests –

+0

Где в коллекции_select я указываю ассоциацию? У меня три ассоциации и три таблицы соединения. Если я использую fields_for: tests, Rails вставляет данные в третью таблицу соединений. – user1575148

Смежные вопросы