rails 4:多态集基类类型而不是继承

bet*_*tic 5 ruby polymorphism ruby-on-rails sti

我有rails关系的问题.我有基础模型蚂蚁他继承的版本

class User < ActiveRecord::Base
end

class Admin < User
end
Run Code Online (Sandbox Code Playgroud)

接下来我有多态关联的成员模型

class Membership < ActiveRecord::Base
  belongs_to :group
  belongs_to :membershipable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)

当我尝试创建成员模型的新实例时,通过键入例如

Membership.new group: Group.first, membershipable: Admin.first
Run Code Online (Sandbox Code Playgroud)

membershipable_type设置为"User"而不是"Admin".所以我创建了before_validation回调

def proper_sti_type
  self.membershipable_type = memebrshipable.class.name
end
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但我想这是更好的方法.也许有人知道更好的解决方案?

谢谢

汤姆