如何自定义public_activity rails gem以使用不同的“表”或“模型”进行“活动”?

时间:2013-03-19 14:45:33

标签: ruby-on-rails ruby gem

我是RoR的新手,我正在尝试将public_activity gem用于已有Activity模型和activities表的现有应用程序。

是否有可能以某种方式配置或欺骗public_activity以使用不同的表&模型没有修改public_activity的整个源代码?

我在想PublicActivity :: Activity只指向不同的模型类?

1 个答案:

答案 0 :(得分:4)

答案很简单。

假设您希望gem使用events表而不是默认使用activities

按照public_activity安装说明并生成迁移后,打开它生成的迁移文件并将表名更改为:events

打开文件 db/migrate/xxxxxxxxx_create_activities.rb 并像这样修改它......

class CreateEvents < ActiveRecord::Migration
  # Create table
  def self.up
    create_table :events do |t|
      t.belongs_to :trackable, :polymorphic => true
      t.belongs_to :owner, :polymorphic => true
      t.string  :key
      t.text    :parameters
      t.belongs_to :recipient, :polymorphic => true

      t.timestamps
    end

    add_index :events, [:trackable_id, :trackable_type]
    add_index :events, [:owner_id, :owner_type]
    add_index :events, [:recipient_id, :recipient_type]
  end
  # Drop table
  def self.down
    drop_table :events
  end
end

然后运行rake db:migrate

然后,创建一个文件config/initializers/public_activity.rb 并添加以下行: PublicActivity::ORM::ActiveRecord::Activity.table_name = 'events'

继续使用文档中描述的public_activity gem并且所有内容都很好。

A special thanks to the developers of public_activity for assistance with this solution in GitHub issues.