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 14 May, 2012, at 14:02, Enrico V. 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 M.
freegoweb.it
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 V. ha scritto:
Alessandro M. wrote in post #1060661:
On 14 May, 2012, at 14:02, Enrico V. 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”
endFammi sapere se la cosa fa al caso tuo
–
Alessandro M.
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)
class BsTolodslRTrABatmaf < ActiveRecord::Base
def table_name
“TOLODSL_R_TR_A_BATMAF”
end
end
Scusate, ho ovviamente tralasciato il self.
davanti allo snippet
Stefano P. wrote in post #1060673:
class BsTolodslRTrABatmaf < ActiveRecord::Base
def table_name
“TOLODSL_R_TR_A_BATMAF”
end
endScusate, 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
2012/5/14 Enrico V. [email protected]
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 May 14, 2012, at 2:54 PM, Stefano P. wrote:
table_name (ActiveRecord::Base) - APIdock
class BsTolodslRTrABatmaf < ActiveRecord::Base
Non riesci a rinominarle in una migrazione 'ste tabelle ?
Magari ti sono utili questi:
http://jonathanhui.com/ruby-rails-3-model-working-legacy-database
ngw
–
[ 926381, 23200231779, 1299022, 1045307475 ].collect { |a| a.to_s( 36 )
}.join( " " )
Nicholas W. (ngw)
[email protected]
Duilio R. wrote in post #1060680:
Enrico V. wrote in post #1060675:
Ciao,
purtroppo il risultato è analogoNel model:
class BsTolodslRTrABatmaf < ActiveRecord::Base
def self.table_name
“BS_TOLODSL_R_TR_A_BATMAF”
end
endIl risultato:
Mysql::Error: Table ‘CRMWS.bs_tolodsl_r_tr_a_batmaf’ doesn’t exist:
SELECT * FROMbs_tolodsl_r_tr_a_batmaf
Ciao,
prova:class BsTolodslRTrABatmaf < ActiveRecord::Base
set_table_name ‘BS_TOLODSL_R_TR_A_BATMAF’
endSe 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 R.
http://sinetris.info
Ciao,
ho risolto il problema aggiornando rails alla versione 3.2.3
ora posso utilizzare set_table_name con successo.
grazie.
Enrico V. wrote in post #1060675:
Ciao,
purtroppo il risultato è analogoNel model:
class BsTolodslRTrABatmaf < ActiveRecord::Base
def self.table_name
“BS_TOLODSL_R_TR_A_BATMAF”
end
endIl risultato:
Mysql::Error: Table ‘CRMWS.bs_tolodsl_r_tr_a_batmaf’ doesn’t exist:
SELECT * FROMbs_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 R.
http://sinetris.info