Rails按令牌发现查找

时间:2014-05-17 21:04:42

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

我的模型看起来像:

class Product < ActiveRecord::Base

  before_create :generate_token

  def to_param
    token
  end

  private

  def generate_token

    self.token = loop do
       random_token = SecureRandom.urlsafe_base64(10, false)
       break random_token unless Product.exists?(token: random_token)
    end
  end

end

我的路线如下:

get "products/:token" => "products#show"

我的控制器看起来像:

def set_product
  @product = Product.find(token: params["token"])
end

但我收到错误:Unknown key: token,即使令牌肯定是在创建(它显示在网址中)

1 个答案:

答案 0 :(得分:4)

使用:

  @product = Product.find_by(token: params["token"])

find方法始终需要id。