2013-11-26 17 views
0

搜索的網址我在urlSearch模型下面的代碼:如何忽略「http://」和「www。」當我使用ActiveRecord

def find_url(orig_url) 
    url = find_by(url: orig_url) 
    unless url 
     # some stuff 
    end 
end 

這裏find_by將搜索傳遞給它的確切字符串是:orig_url說法在我的情況。

例如,如果在我的表我有一個網址,如:www.stackoverflow.com,如果我搜索http://stackoverflow.comhttp://www.stackoverflow.com,這是不一樣的字符串,這意味着find_by將返回零。

有沒有辦法告訴find_by在搜索時忽略http://www.

+0

忽略輸入或存儲的數據? – Babblo

+0

存儲的數據,如果例如在我的數據庫中,我有www.foobar.com,並且我的搜索是「http://foobar.com」,它將返回一個結果 – medBo

回答

1

你可以做url = find_by(url: orig_url.gsub("http://" , ""))

而且你得找別的GSUB爲"www."

1

我沒有看到一個直接的方式來做到這一點。首先,您必須從字符串中提取主機,然後刪除www(如果存在)。

>> string = 'http://www.foobar.com' 
>> host = URI.parse(string).host # www.foobar.com 
>> host.gsub!(/^www\./, '') #foobar.com 
>> MyModel.where('url LIKE ?', "%#{host}%").first 

你應該使用LIKE(或ILIKE PostgreSQL的),如果你不控制存儲在數據庫中的值。在這種情況下,您不能使用find_by,因爲它總是會找到完全匹配的。

相關問題