调用另一个模型文件中的方法

时间:2015-08-07 10:22:21

标签: ruby-on-rails ruby ruby-on-rails-4 model

在我的邀请模型中,我有:

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_digestInvitation表中的一列。 .new_token.digestUser模型中的方法(见下文)。可能导致错误的原因是什么?

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

1 个答案:

答案 0 :(得分:2)

因为你没有邀请模型的user_digest属性的任何setter,你应该添加

attr_accessor :user_digest

这种方式的工作方式相同:user_token(Ruby会为你创建一个getter和setter)。

希望有所帮助