2011-07-04 6 views
1

Ce que j'essaie de faire ici est de comparer 2 chaînes dans les sqlite dbs et je veux dire que je suis un peu perplexe. L'objectif fondamental du programme est que l'utilisateur fasse une demande d'exploration d'un site. Le robot d'exploration divise ensuite le site en tâches ou en liens. J'essaie d'éviter crawls en double et les demandes en disantComparaison de chaînes dans ruby ​​avec Sqlite3 db

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

Anémone est le cadre d'araignée web pour le rubis par le chemin. Donc, la comparaison dans l'instruction if est la suivante:

if(@[email protected]_s) 

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

@allJobs et @allRequests sont à la fois il suffit de sélectionner * de Jobs.Requests

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

La comparaison semble échouer et il crée des doublons aucun problème. Quelqu'un a-t-il des idées?


Sur une note de côté. Comment supprimer un champ des variables .all.

allJobs.drop "où url = myurl.com"?

Répondre

0

C'était une aventure. Pour le bien de quelqu'un d'autre frappant le même problème. suivez ces instructions.

Si vous avez un objet, faire un YAML vidage

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

Et assurez-vous que ce ne est pas nul. C'était le premier gros indice. requestToUpdate a été entièrement rempli alors que jobToCompare ne l'était pas.

Après un peu de sloothing autour j'ai trouvé qu'il y avait de meilleures façons de préciser ce que ces 2 objets étaient plutôt que

@Object.first.url 

remplacer par:

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

url est juste une chaîne PARAM mes objets et peuvent être échangés pour toute autre chose. Le http et/sont ajoutés pour que les différences entre les chaînes correspondent.

Ensuite, il était juste une question de comparer les chaînes de la même manière

else if (("http://"[email protected]+"/").eql? @jobToCompare.url) 

Voila. J'ai eu ma première comparaison de cordes. Je n'oublierai jamais ma première fois. : £