Ciao a tutti, ho la necessità di interfacciare un database MySQL con Rails, le tabelle del db sono tutte maiuscole (ad esempio BS_TODO_ABC_XYZ), qualcuno ha mai affrontato un problema simile? Ho cercato in rete ma non ho trovato molto. Grazie, ciao.
on 2012-05-14 14:02
on 2012-05-14 14:13
On 14 May, 2012, at 14:02, Enrico Venturini wrote: > Ciao a tutti, > ho la necessit di interfacciare un database MySQL con Rails, le tabelle > del db sono tutte maiuscole (ad esempio BS_TODO_ABC_XYZ), qualcuno ha > mai affrontato un problema simile? Ho cercato in rete ma non ho trovato > molto. In environment.rb puoi mettere config.active_record.table_name_prefix = "BS_" Poi nei vari modelli: class Todo < ActiveRecord::Base self.table_name = "TODO_ABC_XYZ" end Fammi sapere se la cosa fa al caso tuo :) -- Alessandro Mencarini freegoweb.it
on 2012-05-14 14:17
il metodo pi rapido usare "table_name=": TuoModel < ActiveRecord::Base self.table_name = "NOME_CUSTOM" end ciao, A. Il 14/05/2012 14:02, Enrico Venturini ha scritto:
on 2012-05-14 14:38
Alessandro Mencarini wrote in post #1060661: > On 14 May, 2012, at 14:02, Enrico Venturini wrote: > >> Ciao a tutti, >> ho la necessit di interfacciare un database MySQL con Rails, le tabelle >> del db sono tutte maiuscole (ad esempio BS_TODO_ABC_XYZ), qualcuno ha >> mai affrontato un problema simile? Ho cercato in rete ma non ho trovato >> molto. > > In environment.rb puoi mettere > > config.active_record.table_name_prefix = "BS_" > > Poi nei vari modelli: > > class Todo < ActiveRecord::Base > self.table_name = "TODO_ABC_XYZ" > end > > Fammi sapere se la cosa fa al caso tuo :) > > -- > Alessandro Mencarini > freegoweb.it Ciao, innanzitutto vi ringrazio per il suggerimento, ma avevo già trovato e provato una soluzione simile senza successo. Comunque ho effettuato nuovamente il test come di seguito descritto: Nel model: class BsTolodslRTrABatmaf < ActiveRecord::Base self.table_name = "BS_TOLODSL_R_TR_A_BATMAF" end Nel controller: @test = BsTolodslRTrABatmaf.find(:all) Il risultato: Mysql::Error: Table 'CRMWS.bs_tolodsl_r_tr_a_batmaf' doesn't exist: SELECT * FROM `bs_tolodsl_r_tr_a_batmaf` (...mentre esiste la tabella BS_TOLODSL_R_TR_A_BATMAF)
on 2012-05-14 14:55
2012/5/14 Enrico Venturini <enrico.venturini@gmail.com> > > Nel model: > class BsTolodslRTrABatmaf < ActiveRecord::Base > self.table_name = "BS_TOLODSL_R_TR_A_BATMAF" > end > hai provato a fare l'override di table_name? http://apidock.com/rails/ActiveRecord/Base/table_name/class class BsTolodslRTrABatmaf < ActiveRecord::Base def table_name "TOLODSL_R_TR_A_BATMAF" end end Sulla documentazione dice che di solito viene forzato a lower case: da un breve giro sui sorgenti sembra l'implementazione di table_name chiami attraverso altri metodi undecorated_table_name e questo chiama #underscore sulla stringa che contiene il nome della tabella. Facendo l'override in teoria non dovrebbe accadere. Eventualmente puoi pensare di mettere l'override in un mixin che fa l'upcase del super se il nome rimane comunque standard. Ciao Stefano
on 2012-05-14 14:56
> > class BsTolodslRTrABatmaf < ActiveRecord::Base > def table_name > "TOLODSL_R_TR_A_BATMAF" > end > end > Scusate, ho ovviamente tralasciato il `self.` davanti allo snippet
on 2012-05-14 15:01
Stefano Pigozzi wrote in post #1060673: >> >> class BsTolodslRTrABatmaf < ActiveRecord::Base >> def table_name >> "TOLODSL_R_TR_A_BATMAF" >> end >> end >> > > Scusate, ho ovviamente tralasciato il `self.` davanti allo snippet Ciao, purtroppo il risultato è analogo Nel model: class BsTolodslRTrABatmaf < ActiveRecord::Base def self.table_name "BS_TOLODSL_R_TR_A_BATMAF" end end Il risultato: Mysql::Error: Table 'CRMWS.bs_tolodsl_r_tr_a_batmaf' doesn't exist: SELECT * FROM `bs_tolodsl_r_tr_a_batmaf`
on 2012-05-14 15:17
On May 14, 2012, at 2:54 PM, Stefano Pigozzi wrote: > http://apidock.com/rails/ActiveRecord/Base/table_name/class > > class BsTolodslRTrABatmaf < ActiveRecord::Base :-( Non riesci a rinominarle in una migrazione 'ste tabelle ? Magari ti sono utili questi: http://www.slideshare.net/napcs/rails-and-legacy-d... http://jonathanhui.com/ruby-rails-3-model-working-... ngw -- [ 926381, 23200231779, 1299022, 1045307475 ].collect { |a| a.to_s( 36 ) }.join( " " ) Nicholas Wieland (ngw) ngw@nofeed.org http://nofeed.org
on 2012-05-14 15:20
Enrico Venturini wrote in post #1060675: > Ciao, > purtroppo il risultato è analogo > > Nel model: > class BsTolodslRTrABatmaf < ActiveRecord::Base > def self.table_name > "BS_TOLODSL_R_TR_A_BATMAF" > end > end > > Il risultato: > Mysql::Error: Table 'CRMWS.bs_tolodsl_r_tr_a_batmaf' doesn't exist: > SELECT * FROM `bs_tolodsl_r_tr_a_batmaf` Ciao, prova: class BsTolodslRTrABatmaf < ActiveRecord::Base set_table_name 'BS_TOLODSL_R_TR_A_BATMAF' end Se non dovesse funzionare, prova ad aggiornare RoR all'ultima versione. (3.2.3 se usi Rails 3 oppure 2.3.14 se usi Rails 2) Oppure indica la versione che stai usando ;) -- Duilio Ruggiero http://sinetris.info
on 2012-05-15 15:49
Duilio Ruggiero wrote in post #1060680: > Enrico Venturini wrote in post #1060675: > >> Ciao, >> purtroppo il risultato è analogo >> >> Nel model: >> class BsTolodslRTrABatmaf < ActiveRecord::Base >> def self.table_name >> "BS_TOLODSL_R_TR_A_BATMAF" >> end >> end >> >> Il risultato: >> Mysql::Error: Table 'CRMWS.bs_tolodsl_r_tr_a_batmaf' doesn't exist: >> SELECT * FROM `bs_tolodsl_r_tr_a_batmaf` > > Ciao, > prova: > > class BsTolodslRTrABatmaf < ActiveRecord::Base > set_table_name 'BS_TOLODSL_R_TR_A_BATMAF' > end > > Se non dovesse funzionare, prova ad aggiornare RoR all'ultima versione. > (3.2.3 se usi Rails 3 oppure 2.3.14 se usi Rails 2) > > Oppure indica la versione che stai usando ;) > > > -- > Duilio Ruggiero > http://sinetris.info Ciao, ho risolto il problema aggiornando rails alla versione 3.2.3 ora posso utilizzare set_table_name con successo. grazie.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.