我的模型看起来像:
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
,即使令牌肯定是在创建(它显示在网址中)
答案 0 :(得分:4)
使用:
@product = Product.find_by(token: params["token"])
find
方法始终需要id。