我有一个像
一样的用户模型class User < ActiveRecord::Base
attr_accessor :remember_token
has_secure_password if not_guest?
geocoded_by :location
after_validation :geocode
在同一模型中,我定义了方法
def not_guest?
guest == false
end
但是像这样我收到错误:undefined method not_guest? for #<Class:0x0000000598cb28>
对我而言,它与错误的呼叫(即行has_secure_password if not_guest?
)在同一模型中明确定义。我的方法出了什么问题?
答案 0 :(得分:0)
在模型的顶部,您可以:
has_secure_password validations: true, unless: :new_guest?
def self.new_guest
new { |u| u.guest = true }
end
您还可以查看STI和多态关联以创建两种类型的用户(即STI的models / member.rb和models / guest.rb)。