Rails事件多态关联

时间:2015-04-13 09:26:56

标签: ruby-on-rails

我正在创建一个事件系统,我想知道我的多态关联是否正确。这些活动可以是全国性的,也可以为整个团体(一个团体有很多商店)或当地广播,并为一个或多个商店进行广播。

我有两种类型的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

0 个答案:

没有答案