Ruby on rails 搜索url的一部分(无协议)
在我的数据库中,我将URL存储为字符串,并进行协议验证,这意味着在主机名之前必须有“http://”、“https://”或“ftp://”。 此外,正在向我的控制器发送操作POST请求,但仅使用主机名,没有协议。如何在数据库中搜索此主机名? 最简单的解决方案是使用协议构造新字符串,但我不知道需要哪一个。它可能是“https”,也可能是“http”。 有什么想法吗? (注意:这是Rails 3应用程序) 编辑 有人指出我的问题不清楚,所以我现在会努力更好地解释。 在数据库中,我有一个列url。它存储以“http://”、“https://”或“ftp://”开头的链接。 它们可能是这样的: 网址: 我的控制器收到带有主机名的POST请求,它可能是Ruby on rails 搜索url的一部分(无协议),ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的数据库中,我将URL存储为字符串,并进行协议验证,这意味着在主机名之前必须有“http://”、“https://”或“ftp://”。 此外,正在向我的控制器发送操作POST请求,但仅使用主机名,没有协议。如何在数据库中搜索此主机名? 最简单的解决方案是使用协议构造新字符串,但我不知道需要哪一个。它可能是“https”,也可能是“http”。 有什么想法吗? (注意:这是Rails 3应用程序) 编辑 有人指出我的问题不清楚,所以我现在会努力更好地解释。 在数据库中,我有一个列url。它
{“domain”=>“google.com”}
所以现在我需要做的是在数据库中搜索“google.com”来更新它。但正如您所看到的,“域”键下的值不存储协议。所以我不知道它是否是”http://google.com“
或”https://google.com“
,但我必须设法找到它
request.host
request.host_with_port
request.url
使用.where(:url=>current\u url)的just查询
不完全确定你在问什么,但这些应该会为你指明正确的方向(我希望)据我所知,你将在一个POST参数中获得一个没有协议的URL,并且你希望将其与数据库中有协议的URL相匹配 这就是我要做的: 备选案文1: 如果可行,将协议和URL的其余部分存储在数据库中的两个单独字段中。这样比较容易 备选案文2: 使用正则表达式! 假设您得到如下参数:
{"domain" => "google.com"}
然后我会这样做来查找记录:
(假设您的模型名为“记录”)
{"domain" => "google.com"}
domain = params[:domain]
@record = Record.where('name = ? OR name = ? OR name = ?', "https://#{domain}", "http://#{domain}", "ftp://#{domain}" )