我环顾四周但不确定如何做到这一点 - >
我的数据库中有1个超类型和2个子类型,如MTI所示,使用Heritage gem并由Devise验证。
class User < ActiveRecord::Base
acts_as_predecessor
devise :database_authenticatable, :registerable, :recoverable,
:rememberable, :trackable, :validatable
end
class SubUser1 < User
acts_as_heir_of :user
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable #some unique columns
end
class SubUser2 < User
acts_as_heir_of :user
devise :database_authenticatable, :registerable, :recoverable,
:rememberable, :trackable, :validatable #Hi,some unique columns
end
但是这个测试失败了。
1) SubUser should create a new instance given a valid attribute
Failure/Error: SubUser.create!(@attr)
ActiveRecord::RecordInvalid:
Validation failed: Predecessor password can't be blank
我的问题是如何使用用户模型中的if语句进行测试来测试我实例化的用户类型。在我实例化子用户的情况下,在用户中跳过此行 - &gt;
:database_authenticatable, :registerable, :recoverable,
:rememberable, :trackable, :validatable
答案 0 :(得分:0)
如果您正在谈论测试用户的实例是否是用户模型,那么您可以使用:
if self.is_a? User
如果你在课堂上,那我就不知道了。也许尝试类似的事情:
if self.class_name == 'User'
但它通常不赞成 - 这需要知道你是什么类型的用户的代码气味。重新思考问题并找出构建类层次结构的更好方法会好得多。
有没有“前任/继承人”做这种事情的方式?例如“如果我是前任,那么......”