Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 搜索url的一部分(无协议)_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 搜索url的一部分(无协议)

Ruby on rails 搜索url的一部分(无协议),ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的数据库中,我将URL存储为字符串,并进行协议验证,这意味着在主机名之前必须有“http://”、“https://”或“ftp://”。 此外,正在向我的控制器发送操作POST请求,但仅使用主机名,没有协议。如何在数据库中搜索此主机名? 最简单的解决方案是使用协议构造新字符串,但我不知道需要哪一个。它可能是“https”,也可能是“http”。 有什么想法吗? (注意:这是Rails 3应用程序) 编辑 有人指出我的问题不清楚,所以我现在会努力更好地解释。 在数据库中,我有一个列url。它

在我的数据库中,我将URL存储为字符串,并进行协议验证,这意味着在主机名之前必须有“http://”、“https://”或“ftp://”。 此外,正在向我的控制器发送操作POST请求,但仅使用主机名,没有协议。如何在数据库中搜索此主机名? 最简单的解决方案是使用协议构造新字符串,但我不知道需要哪一个。它可能是“https”,也可能是“http”。 有什么想法吗? (注意:这是Rails 3应用程序)

编辑

有人指出我的问题不清楚,所以我现在会努力更好地解释。 在数据库中,我有一个列url。它存储以“http://”、“https://”或“ftp://”开头的链接。 它们可能是这样的: 网址:

我的控制器收到带有主机名的POST请求,它可能是
{“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}" )