gpt4 book ai didi

ruby-on-rails - :id and :token 的 Rails 路由参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:40 28 4
gpt4 key购买 nike

是否可以为 :id 和 :token 设置路由参数?

关于如何更改默认路由参数的资源非常丰富:

resources :events, params: :token

def to_param
token
end

但是,我似乎找不到任何与允许某人通过 event_id 或 event_token 访问 Events#show 的“非此即彼”场景相关的内容。在我看来,以下是有道理的:

resources :events, params: :token || :id

背景故事:我正在设置一个“共享链接”,以便没有帐户的用户可以查看事件页面,类似于 google 文档。为此,为每个事件生成一个唯一的 token ,创建一个网络安全 url ( Protected sharing link in Ruby on Rails )。我面临的问题是尝试同时使用 event_id 和 event_token 来维护路由,因为帐户持有人也正在查看事件页面,其中通过 ID 查找事件要容易得多。

谢谢。

最佳答案

假设url是相同的形状-

# routes.rb
resources :events

# your urls
/events/15
/events/some-token-string

Rails 会将最后一个斜杠后的所有内容都视为 id 参数。从那里您可以使用 子句进行查询

# Rails 5 with no raw SQL
Event.where(id: params[:id]).or(Event.where(token: params[:id])).first

# Rails 4 and lower (also works with Rails 5)
Event.where("id = ? or token = ?", params[:id], params[:id]).first

关于ruby-on-rails - :id and :token 的 Rails 路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36946882/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com