Сравнение строк в рубине с Sqlite3 db's - PullRequest
1 голос
/ 04 июля 2011

То, что я пытаюсь сделать здесь, это сравнение 2 строк в базе данных sqlite, и я хочу сказать, что я немного озадачен.Основная цель программы состоит в том, чтобы пользователь сделал запрос на сайт для сканирования.Затем сканер разбивает сайт на рабочие места или ссылки.Я пытаюсь избежать повторных сканирований и запросов, говоря:

if(request is already in jobs list)
    {
    do nothing
    }
else
    {
    Anemone.crawl(....)

Между прочим, Anemone - это фреймворк веб-паука для ruby.

Таким образом, сравнение в выражении if выглядит следующим образом.

    if(@allRequests.first.url.to_s.eql?@allJobs.first.url.to_s)

        puts 'TEST TEST TEST'
        puts 'Request is already detected in job list'

@ allJobs и @allRequests оба просто выбираются * из Jobs.Requests

@allJobs = Job.all
@allRequests = Request.all

Сравнение, похоже, не удается, и это создает проблемы без дубликатов.У кого-нибудь есть идеи?


На заметку.Как удалить поле из всех переменных.

allJobs.drop "где url = myurl.com"?

1 Ответ

0 голосов
/ 05 июля 2011

Так что это было приключение.Ради кого-то другого ударить по той же проблеме.следуйте этим инструкциям.

Если у вас есть объект, выполните дамп YAML

puts YAML::dump(@requestToUpdate)
puts YAML::dump(@jobToCompare)

и убедитесь, что он не равен нулю.Это была первая большая подсказка.requestToUpdate был заполнен полностью, а jobToCompare - нет.

После некоторого безделья я обнаружил, что есть более эффективные способы указать, что эти 2 объекта вместо

@Object.first.url

заменить на:

@requestToUpdate = Request.find_by_url(@usersRequestedSite)
@jobToCompare = Job.find_by_url("http://"+@usersRequestedSite+"/")

url - это просто строковый параметр моих объектов, и его можно поменять на другое.Добавленные http и / предназначены для сравнения различий между строками.

После этого нужно было просто сравнить строки таким же образом

else if (("http://"+@requestToUpdate.url+"/").eql? @jobToCompare.url)

Вуаля.У меня было первое сравнение строк.Я никогда не забуду свой первый раз.: £

...