[英]Register SQLite user-defined functions with Rails
我正在開發使用SQLite作為DBMS的Ruby on Rails Web應用程序。 我們的某些報告需要一定程度的高級數學,因此我想使用SQLite C API定義幾個數學函數。
根據《 SQLite權威指南》第二版 (第5.2節):
由於用戶定義的擴展名存儲在程序存儲器中,因此必須逐個連接進行注冊。 也就是說,它們不像大型關系數據庫系統中的存儲過程那樣存儲在數據庫中。 它們存儲在您的程序中。 當程序或腳本啟動時,它負責為打算使用它們的每個連接注冊所需的用戶定義擴展。
如何在Rails中注冊功能? 我假設我需要向我的database.yml文件添加一些咒語。 哪個咒語?
例如,要使用2個參數注冊新函數'regexp',您需要創建具有以下內容的文件config / initializers / sqlite3_regexp.rb:
require 'active_record/connection_adapters/sqlite3_adapter'
class ActiveRecord::ConnectionAdapters::SQLite3Adapter
def initialize(db, logger, config)
super
db.create_function('regexp', 2) do |func, pattern, expression|
regexp = Regexp.new(pattern.to_s, Regexp::IGNORECASE)
if expression.to_s.match(regexp)
func.result = 1
else
func.result = 0
end
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.