2014-03-13 46 views
0

在我的數據庫,我店網址作爲字符串,協議驗證的一部分,這意味着必須有一個「HTTP://」,「https://開頭」或「FTP: //「在主機名之前。 此外,對我的控制器操作POST請求正在發送,但僅與主機名,沒有協議。我怎樣才能搜索數據庫這個主機名? 最簡單的辦法是隻構建新的字符串的協議,但我不知道我要去需要哪一個。它可能是「https」,就像「http」一樣。 有什麼建議嗎? (注意:這是Rails 3的應用程序)搜尋網址(不含協議)

編輯

它已經指出,我的問題是不明確的,所以我會嘗試,現在能夠更好地解釋它。 在數據庫中我有列URL。它存儲以「http://」,「https://」或「ftp://」開頭的鏈接。 它們可能看起來像這樣: 網址:

"http://google.com" 
"https://amazon.com" 
"ftp://somehostname.com" 

我控制器獲取與主機名POST請求,也可能是{"domain" => "google.com"}

所以,現在我需要做的是在數據庫中搜索「google.com」更新它。但正如你所看到的,在「域」鍵下的值不會存儲協議。所以我不知道這是否是"http://google.com""https://google.com",但我必須以某種方式找到它。

回答

0
request.host 
request.host_with_port 
request.url 

request.host

用。凡剛剛查詢(:URL => current_url)

不是你問完全相信,但是這些應該指向你在正確的方向(我希望)

+0

我更新了我的問題,使它更清楚 – Leo

+0

'request.referrer' –

0

據我瞭解,你會得到一個URL,而不在您的文章則params的一個協議,你想在你的數據庫中的人其中有一個協議匹配。

這是我會做什麼:

選項1: 如果可行店的協議和URL的其餘部分在數據庫中的兩個不同的領域。很容易比較這種方式。

選項2:使用 正則表達式! 比方說,你得到PARAMS如下:

{"domain" => "google.com"} 

然後我會做這個來查找記錄: (模型的假設名稱爲「記錄」)

domain = params[:domain]  
@record = Record.where('name = ? OR name = ? OR name = ?', "https://#{domain}", "http://#{domain}", "ftp://#{domain}")