存在具有friendly_id gem的方法

时间:2019-10-30 07:36:49

标签: ruby-on-rails ruby

有关如何进行以下操作的任何建议:

我有一个专用的授权方法,看起来像这样

def offer_authorised
    redirect_to dashboard_path, 
        alert: "You don't have permission." unless Offer.exists?(['id = ? AND (landlord_id = ? OR user_id = ?)', params[:id], current_user.id, current_user.id])
end

和即时消息按如下方式使用friendly_id gem

class Offer < ApplicationRecord
  extend FriendlyId
  friendly_id :generated_slug, use: :slugged

  def generated_slug
   require 'securerandom' 
   @random_slug ||= persisted? ? friendly_id : SecureRandom.hex(15) 
 end
end

因此它只是为该网址生成一个唯一的ID,但是这里的问题是我遇到一个错误提示

PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "f72662293f2578fee4ebd59f62668b" LINE 1: SELECT 1 AS one FROM "offers" WHERE (id = 'f72662293f2578fee... ^

所以我认为这是因为id不是整数,然后, 我试图通过在存在的params [:id]上调用to_s方法来解决此问题?方法,但这没有用。

有人建议将params [:id]更改为Offer.friendly.find(params [:id]),的确可以,但是似乎有点可疑,所以如果有人有更好的解决方案,我将很高兴听到它。

0 个答案:

没有答案