如何编写此迁移的相反内容?

时间:2012-05-22 19:01:23

标签: ruby-on-rails polymorphic-associations

我现在的迁移:

class CreateActivities < ActiveRecord::Migration
  def self.up
    create_table :activities do |t|
      t.integer :account_id, :null => false
      t.integer :target_id, :null => false
      t.string  :target_type, :null => false
      t.string  :event_type, :null => false
      t.integer :employee_id
      t.string  :name
      t.timestamps
    end

    add_index :activities, [:target_id, :target_type]

有了这个,我现在可以像这样调用目标:

Activity.first.target

它会根据target_type显示target_id。

我如何做到与此相反,以便我可以选择一个目标,如果它有任何相关的活动,它们会出现?

像这样:

Job.find(1234).activities
# Where Job.find(1234) is the target_id of many activities.

1 个答案:

答案 0 :(得分:1)

如果我理解正确,应该这样做:

class Job < ActiveRecord::Base
  has_many :activities, :conditions => ['target_type = ?', 'Job'], :as => :target
end