Probleme beim Erstellen eines generischen Modells in Ruby on Rails 3
Ich versuche, ein "generisches Modell" zu erstellen, damit es eine Verbindung zu einer beliebigen Tabelle einer beliebigen Datenbank herstellen kann. Zuerst habe ich diese Klasse erstellt, die eine Verbindung zu einer anderen angegebenen Datenbank herstellt (ohne das Schema zu verwenden).
Db
class Db < ActiveRecord::Base
self.abstract_class = true
attr_accessor :error
def initialize(item = nil)
@error = ""
connect
super
end
def connect
could_connect = true
@error = ""
begin
ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:host => "localhost",
:username => "root",
:password => "",
:database => "another_database",
:port => 3306,
:encoding => "utf8"
)
rescue ActiveRecord::ConnectionNotEstablished
@error = "Could not connect to database. The connection was not established"
could_connect = false
rescue Mysql2::Error
@error = "Could not connect to database using MySQL2"
could_connect = false
rescue => e
@error = "Could not connect to database. #{e.message}."
could_connect = false
end
return could_connect
end
end
Dann habe ich diese Klasse erstellt, die von Db erbt und den Tabellennamen angibt
Gmodel
class Gmodel < Db
def initialize(new_table_name)
ActiveRecord::Base.set_table_name(new_table_name)
super
end
end
Schließlich in der Steuerung
Hauptcontroller
class MainController < ApplicationController
def index
@users = Gmodel.new("users")
end
end
Aber es gab mir diesen Fehler:
undefined method `stringify_keys' for "users":String
Was könnte falsch sein? Gibt es einen besseren Weg, dies zu tun? Danke im Voraus!