我試圖製作一個「通用模型」,以便它可以連接到任何數據庫的任何表。首先,我做了這個類,它會連接到指定(不使用模式),另一個數據庫在Ruby on Rails 3中製作通用模型時遇到的問題
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
於是,我做了這個類從數據庫繼承並指定表名
Gmodel
class Gmodel < Db
def initialize(new_table_name)
ActiveRecord::Base.set_table_name(new_table_name)
super
end
end
最後,在控制器
MainController
class MainController < ApplicationController
def index
@users = Gmodel.new("users")
end
end
但是,它gaves我這個錯誤:
undefined method `stringify_keys' for "users":String
出了什麼問題?有沒有更好的方法來做到這一點?提前致謝!
什麼是抽象類DB的目的是什麼? – sailor
你曾經是一名Java開發人員嗎? –