[英]Ruby inheritance of class and method in JDBC connection string
我有以下代碼片段,為各種數據庫生成JDBC連接字符串。 在本例中,Dash DB和IBM DB2。 以下是我用於在DB2中生成連接字符串的代碼的結構。
def connection_creation_information
@connection_creation_information ||= Class.new(JDBCConnectionCreationInformation) do
private
def connection_string_primary_params(options)
params = []
params << "currentSchema=#{options[:schema] || options[:username]}"
params << options[:jdbc_additional_params] if options[:jdbc_additional_params]
params
end
def connection_string_scheme
'db2'
end
def connection_string_params(options)
super + ';'
end
def primary_param_separator
';'
end
def base_separator
':'
end
end.new
end
現在,DashDB使用defaultSchema
來定義默認模式,而在DB2中,它使用currentSchema
。 我試圖盡可能地減少冗余代碼,所以現在,Dash DB的代碼繼承自DB2使用class HTDialectDashDB < HTDialectDB2
並覆蓋重要的一行/方法 - connection_string_primary_params()
在我的Dash DB類中,我正在執行以下操作:
def connection_creation_information
@connection_creation_information ||= Class.new(JDBCConnectionCreationInformation) do
private
def connection_string_primary_params(options)
params = []
params << "defaultSchema=#{options[:schema] || options[:username]}"
params << options[:jdbc_additional_params] if options[:jdbc_additional_params]
params
end
end.new
end
但是,拋出的錯誤是我必須實現DB2代碼中描述的其他四種方法,我想避免這種方法,因為它只是冗余代碼。
在這種情況下我該怎么辦?
對Dash DB和DB2都使用currentSchema
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.