vkill'blog

“技术本身没有太多价值,掌握了新的思考方式才是真的收获”

ActiveRecord 属性 abstract_class 的使用

18:45 , vkill
源自此文 http://www.javaeye.com/topic/720086
比如需要修改User 和 Class 这两个model的 primary_key ,如果不用 抽象类 的话那就需要修改所有model,而使用 抽象类 的话只需要在修改抽象类的属性 abstract_class 值为true就好了,具体如下所示

#不使用抽象类
class User < ActiveRecord::Base
  set_primary_key "name"
end
class Class < ActiveRecord::Base
  set_primary_key "name"
end


#使用抽象类
class AbstractModel < ActiveRecord::Base
  set_primary_key "name"
  self.abstract_class = true
end
class User < AbstractModel
end
class Class < AbstractModel
end



使用抽象类时:
abstract_model表不需要存在
默认的 abstract_class 属性值为 false
Quotation

如果 abstract_class 的值 false,则
当执行User时候,ActiveRecord会将表名从直接继承Base的AbstractModel类的类名生成,而不是最底端的User类,除非在User类中手动set_table_name才可以

Last modified by vkill on2010/07/25 18:46
类别:ruby & rails | Tags: , , | 0 条评论, 1091 次阅读
网友评论(0):
发表评论:

Nickname: 
Email:
Site URI: