Любые предложения о том, как действовать следующим образом:
У меня есть закрытый метод авторизации, который выглядит следующим образом
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 следующим образом
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
Так что он просто генерирует уникальный идентификатор для URL, но проблема здесь в том, что я сталкиваюсь с ошибкой, которая говорит
PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "f72662293f2578fee4ebd59f62668b" LINE 1: SELECT 1 AS one FROM "offers" WHERE (id = 'f72662293f2578fee... ^
Так что я предположил, что это потому, что идентификатор не являетсяцелое число, а затем я попытался исправить это, вызвав метод to_s для params [: id] в существует? метод, но это не сработало.
Кто-то предложил изменить params [: id] на Offer.friendly.find (params [: id]), и это действительно работает, но это выглядит немного странно, поэтому, если у кого-то есть лучшее решение, я будурад это слышать.