0

urlSearch モデルに次のコードがあります。

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

ここで find_by は、渡された正確な文字列を検索します。これはorig_url、私の場合は引数です。

たとえば、テーブルに : のような URL があり、またはをwww.stackoverflow.com検索すると、同じ文字列ではないため、nil が返されます。http://stackoverflow.comhttp://www.stackoverflow.comfind_by

検索時にfind_by無視するように指示する方法はありますか?http://www.

4

2 に答える 2

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(またはpostgresql に対して)使用する必要があります。常に完全一致が見つかるため、この場合ILIKEは使用できません。find_by

于 2013-11-26T01:57:57.537 に答える
1

あなたができるurl = find_by(url: orig_url.gsub("http://" , ""))

そして、別のgsubが必要になります"www."

于 2013-11-26T01:52:16.413 に答える