[RoR] find_or_create_by rare entries

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • doncuomo
  • Registratie: Augustus 2009
  • Laatst online: 08-03-2024
Dag Tweakers,

Ik ben RoR aan het leren en ben momenteel bezig met data overzetten van een database naar een andere.

Als ik mijn query uitvoer op de eerste database dan is het resultaat bijvoorbeeld
Brides les Bains
Vervolgens zet ik het over naar de andere database maar.... hier komt het. De entries worden gewoon gecreerd ookal bestaan ze al. Dus ik ging kijken naar de entries en toen zag ik dit.
---
- Brides les Bains
Dus ergens in de code komt er op magische wijze --- - bij O_O.
Het stukje waar het om draait ziet er zo uit:
def export
@sql = "SELECT subcategory FROM products limit 50"
@towncopies = Towncopy.connection.execute(@sql)

@towncopies.each do |townname|

Tagname.find_or_create_by_tagname(townname)

end

end
Het is niet helemaal netjes dat ik sql en RoR door elkaar gebruik maar let daar aub even niet op. Tenzij dit het probleem veroorzaakt ofc xD

Bedankt voor het lezen,

Cuomo

Acties:
  • 0 Henk 'm!

  • doncuomo
  • Registratie: Augustus 2009
  • Laatst online: 08-03-2024
Hmm vermoedelijk zit het tussen de switch van een MySQL database naar SQLite3 database. De [] worden niet herkend o.i.d in de inserts die gecreerd worden.

Acties:
  • 0 Henk 'm!

  • doncuomo
  • Registratie: Augustus 2009
  • Laatst online: 08-03-2024
Ik heb nu net de sqlite3 database omgezet naar mysql, maar dit maakt geen verschil.

Acties:
  • 0 Henk 'm!

  • doncuomo
  • Registratie: Augustus 2009
  • Laatst online: 08-03-2024
bedank iedereen ik heb de fout al! -_-'

In php gebruik je normaal mysql_fetch_array, ik moet hier ook zoiets voor gaan vinden ofc -_-

Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
Omdat je aangeeft dat je Ruby on Rails aan het leren bent, denk ik dat het om testdata gaat. Dat kun je redelijk makkelijk doen door alles te selecten uit je MySQL database en dat in het seeds bestand te zetten.

Stel je hebt de volgende tabel items.

+-----+----------+----------------+
| id  | name     | data           |             
+-----+----------+----------------+
| 1   | foo      | bladiebla      |
| 2   | bar      | blaat          |
+-----+----------+----------------+


1: Je maakt een model aan in Rails: rails g model Item name:string data:text
2: Je zorgt er voor dat je voor ieder record uit je MySQL database een regel krijgt die er als volgt uit ziet:

Ruby:
1
Item.create([{name: "foo", data: "bladiebla"}])


3: Deze regels zet je in db/seeds.rb
4: Je voert het volgende commando uit: rake db:migrate && rake db:seed

Als je zoiets doet, heb je je data in je Rails applicatie staan en kun je er mee spelen wat je wilt.

Mag ik trouwen vragen waarom je variabelen die je alleen gebruikt in de method export in instancevariabelen zet? Wat je in je code voorbeeld hebt gedaan, zou er in PHP ongeveer als volgt uit zien:

PHP:
1
2
3
4
5
6
7
8
function export() {
  $this->sql = "";
  $this->towncopies = "";
  
  foreach ($this->towncopies as $townname) {
    // Insert
  }
}


Dit hoort niet, omdat andere methodes in je class in principe niets te maken hebben met de data die gebruikt wordt in de export functie. Zie ook: Wikipedia: Encapsulation (object-oriented programming)

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Die "--- -" die je ziet is trouwens een teken dat de data in YAML op wordt geslagen.. probeer dit maar eens in een Rails console:

code:
1
2
3
1.9.1 :014 > puts ["bla"].to_yaml
---
- bla


Misschien dat dat je helpt :)

[ Voor 14% gewijzigd door Bigs op 23-02-2012 16:02 ]

Pagina: 1