我们在 rails/activerecord 中的多态关系存在一定的问题。如另一个问题所述。我们需要这种具有整数 foreign_type 列的多态关系的原因是表中的记录数,我们在该表中有大约 4000 万条记录,而且这个数字还在增加。我们尝试在数据库服务器上节省存储空间,以节省与数据库中的索引处理有关的内存消耗。
前面提到的问题与 Rails 2 有关,如果已经尝试将它与 Rails 3 一起使用,但它不起作用。该模块的方法从未被调用,我不明白为什么。
我想在迁移类中看到这样的映射与列类型
class Notification < ActiveRecord::Base
belongs_to :notifiable, :polymorphic => true
end
class User < ActiveRecord::Base
attr_accessible :name
has_many :notifications, :as => :notifiable
end
class Comment < ActiveRecord::Base
attr_accessible :text
has_many :notifications, :as => :notifiable
end
class Message < ActiveRecord::Base
attr_accessible :title, :text
has_many :notifications, :as => :notifiable
end
class Activity < ActiveRecord::Base
attr_accessible :title, :description
has_many :notifications, :as => :notifiable
end
class CreateNotification < ActiveRecord::Migration
def change
create_table :notifications do |t|
t.integer :notifiable_id
t.integer :notifiable_type # should be a tinyint at the database
t.timestamps
end
end
end
I would like to map Comment and User with a numeric value and save the numeric value instead of the class name as type information.