3

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

是否可以在不修改 public_activity 的整个源代码的情况下以某种方式配置或欺骗 public_activity 以使用不同的表和模型?

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

4

1 回答 1

4

答案很简单。

假设您希望 gem 使用eventstable 而不是默认的 using 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,一切都很好。

特别感谢 public_activity 的开发人员在 GitHub 问题中提供此解决方案的帮助。

于 2013-03-19T14:50:12.393 回答