在我的邀请模型中,我有:
attr_accessor :user_token
def create_user(user)
create_user_digest
...
end
private
def create_user_digest
self.user_token = User.new_token
self.user_digest = User.digest(user_token)
end
它会生成错误:
undefined method `user_digest=' for #<Invitation:0x000000044c3318>
我已经调整了User
模型中的设置,其中我有类似的注册身份验证设置。 user_digest
是Invitation
表中的一列。 .new_token
和.digest
是User
模型中的方法(见下文)。可能导致错误的原因是什么?
def User.digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end
def User.new_token
SecureRandom.urlsafe_base64
end
答案 0 :(得分:2)
因为你没有邀请模型的user_digest属性的任何setter,你应该添加
attr_accessor :user_digest
这种方式的工作方式相同:user_token(Ruby会为你创建一个getter和setter)。
希望有所帮助