Я использую Rails Composite Keys в первый раз, и хотя я прочитал документы, я до сих пор не уверен, как правильно настроить модели.Rails Composite Keys - Настройка моделей и ассоциаций
Деятельность может быть запланирована поставщиком. Мне нужна таблица соединений, которая отслеживает activity_id
и provider_id
как уникальный составной ключ, так что я могу связать его с чем-то другим (цены). Состав должен быть создан при создании нового расписания. Поставщик не обязательно сам владеет своей деятельностью непосредственно.
У меня есть это для моего составного ключа, поскольку это собственная модель. Это правильно?
class ScheduledActivity < ActiveRecord::Base
self.primary_keys = :provider_id, :activity_id
belongs_to :activity
belongs_to :provider
has_many :schedules, :foreign_key => [:provider_id, :activity_id]
has_many :prices, :foreign_key => [:provider_id, :activity_id]
end
Это для миграции БД:
class CreateJoinTableScheduledActivities < ActiveRecord::Migration
def change
create_join_table :providers, :activities, table_name: :scheduled_activities do |t|
t.index [:provider_id, :activity_id]
end
end
end
Как потом получить новые записи на соединительной таблице, как создается расписание? Я помещаю только belongs_to :scheduled_activity
в эту модель - т. Е. Нет идентификаторов провайдера и активности в таблице расписания, и я пишу отдельный крючок для создания новых составных клавиш?
(Также - это правильный вариант использования для составных ключей в первую очередь ?!)
Заранее спасибо!