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)
它的工作原理,但我想这是更好的方法.也许有人知道更好的解决方案?
谢谢
汤姆