Rails Rails 如何实现多态继承

rails_taotao · 2017年08月08日 · 最后由 fage108 回复于 2018年06月12日 · 1825 次阅读
class Member < ActiveRecord::Base
end
class Demander < Member
end
class Supplier < Member
end

如何在实现Demander特有的属性只在Demander中使用,Supplier特有的属性只在Supplier中生效,公共的属性存在Member中

共收到 5 条回复

关键字Single-table inheritance

ruby 能否实现多表继承

http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html

表结构:

  • id: int
  • type: string
class User < ActiveRecord::Base
end

class Group < User
end

group = Group.create
group.type
=> "Group"

user = User.create
user.type
=> "User"

多态的话,楼主是这个意思吗?

class Member < ActiveRecord::Base
  # resource_id, int , 'demanders 或是 suppliers 的id'
  # resource_type, string, 'Demander 或是 Supplier'
  has_one :resource, :polymorphic => true
end
class Demander < Member
  belongs_to :members, :as => :resource
end
class Supplier < Member
  belongs_to :members, :as => :resource
end

我觉得单表继承也能实现你的需求

rails_taotao 关闭了讨论 06月29日 12:26
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册