ruby-on-rails - 从另一个模型文件调用方法

标签 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

最佳答案

这是因为您在 Invitation 模型的 user_digest 属性上没有任何 setter,所以您应该添加

attr_accessor :user_digest

这样,它的工作方式与 :user_token 的工作方式相同(Ruby 将为您创建一个 getter 和一个 setter)。

希望对你有帮助

关于ruby-on-rails - 从另一个模型文件调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875441/

相关文章:

ruby-on-rails - 无法在 Ruby on Rails 中保存多张图片 Json

html - 将 CSS 文件链接到 Haml 布局模板

javascript - 测试 Angular/Rails 应用程序的首选方法是什么?

ruby-on-rails - Windows 上的 Ruby On Rails 与 Mongrel

ruby - 在 Ruby 中继承可以进行类型转换吗?

ruby-on-rails - 测试schema.org ld+json内容

javascript - Cloudinary cl_image_upload 与 cl_image_upload_tag

ruby-on-rails - 将对象作为参数传递时,它们是通过引用传递的吗?

ruby - 方法和变量名相同

javascript - 将 onChange 事件放在选择框中