我正在创建一个事件系统,我想知道我的多态关联是否正确。这些活动可以是全国性的,也可以为整个团体(一个团体有很多商店)或当地广播,并为一个或多个商店进行广播。
我有两种类型的jingles将在达到阈值后同时广播:“primary_media”和“generic_media”,主要媒体是将在商店中播放的媒体,达到阈值并且在同时,通用媒体是媒体将在该集团的其他商店播放的媒体。
我的迁移:
class CreateEvents < ActiveRecord::Migration
def up
create_table :events do |t|
t.integer :primary_media_id
t.string :primary_media_type
t.integer :generic_media_id
t.string :generic_media_type
t.string :created_by
t.string :updated_by
t.integer :threshold
t.references :eventable, polymorphic: true, index: true
t.timestamps
end
end
def down
drop_table :events
end
end
event.rb已编辑
belongs_to :eventable, polymorphic: true
has_many :event_join
group.rb已编辑
has_many :event_join, as: :eventable,
has_many :events, through: :event_join
shop.rb已编辑
has_many :event_join, as: :eventable
has_many :events, through: :event_join
正如你所看到的,它非常复杂,并且想知道你们是否可以帮助我在创建这个系统时朝着正确的方向前进。
知道商店属于某个群体。我正在阅读在线文档中的关联章节,我想知道自联接方法是否更具相关性。对不起这个新手问题,我对rails和多态关联都很陌生。
编辑:我创建了一个联合表
联合表:
class EventJoin < ActiveRecord::Migration
def up
create_table :event_join, :id => false do |t|
t.string :event
t.integer :eventable_id,
t.string :eventable_type,
t.boolean :status,
t.string :created_by,
t.string :updated_by
end
end
def down
drop_table :event_join
end
end