W mojej bazie danych znajdują się nazwy kolumn, takie jak "delete" lub "listen-control" i tak dalej. Nie można ich zmienić, więc chciałbym zmienić nazwy, aby uniknąć problemów w mojej aplikacji.Alias dla nazw kolumn w Railsach
znalazłem the following code ale jest nieaktualny (05 sie 2005) i nie działa z szyn 3:
module Legacy
def self.append_features(base)
super
base.extend(ClassMethods)
end
module ClassMethods
def alias_column(options)
options.each do |new_name, old_name|
self.send(:define_method, new_name) { self.send(old_name) }
self.send(:define_method, "#{new_name}=") { |value| self.send("#{old_name}=", value) }
end
end
end
end
ActiveRecord::Base.class_eval do
include Legacy
end
Jak mogę aliasu nazwy kolumn? Czy to możliwe?
Nie widzę problemu z używaniem "delete" i "listen-control" jako nazw kolumn? Czy napotkasz błąd lub coś innego? – Ariejan
listen-control powoduje problemy, ponieważ w nazwie ma myślnik, co czyni go nieprawidłowym atrybutem obiektu ruby. Ruby zinterpretuje "object.listen-control" jako "object.listen, minus control". A usunięcie może być zastrzeżonym słowem kluczowym. Nie wiem, dlaczego chciałbyś to zrobić. Czasami właściwą odpowiedzią jest zaprzestanie prób walki z rubinem lub szynami. –
'define_method (" listen-control ", Proc.new {puts" bingo "})' then 'send (" listen-control ")'. Gdzie jest problem? – rthbound