【发布时间】:2019-05-03 19:39:00
【问题描述】:
我有一个用户模型,它可以有一个电子邮件和一个电话号码,这两个都是他们自己的模型,因为它们都需要某种形式的验证。
所以我要做的是将Verification::EmailVerification 附加为email_verifications 和Verification::PhoneVerification 作为phone_verifications,它们都是Verification 的STI。
class User < ApplicationRecord
has_many :email_verifications, as: :initiator, dependent: :destroy
has_many :phone_verifications, as: :initiator, dependent: :destroy
attr_accessor :email, :phone
def email
@email = email_verifications.last&.email
end
def email=(email)
email_verifications.new(email: email)
@email = email
end
def phone
@phone = phone_verifications.last&.phone
end
def phone=(phone)
phone_verifications.new(phone: phone)
@phone = phone
end
end
class Verification < ApplicationRecord
belongs_to :initiator, polymorphic: true
end
class Verification::EmailVerification < Verification
alias_attribute :email, :information
end
class Verification::PhoneVerification < Verification
alias_attribute :phone, :information
end
但是,通过上述设置,我收到错误 uninitialized constant User::EmailVerification。我不确定我哪里出错了。
我如何构造它以便可以访问用户模型上的email_verifications 和phone_verifications?
【问题讨论】:
-
您的用户模型是多态的还是只有一个用户模型?
标签: ruby-on-rails polymorphic-associations sti