【问题标题】:Multisite Rails/Jruby site has ActiveRecord::AdapterNotSpecified database configuration does not specify adapter issue多站点 Rails/Jruby 站点具有 ActiveRecord::AdapterNotSpecified 数据库配置未指定适配器问题
【发布时间】:2014-07-28 22:31:04
【问题描述】:

尝试根据下拉菜单更改 Web 应用程序架构。我有一种感觉,我没有拉入下拉选择。

型号:

class MyApp < ActiveRecord::Base 
def initialize(dbase)
 @dbase = fdbase
 if @dbase == 'DB01'
   ActiveRecord::Base.establish_connection"#{Rails.env}"
 else
   ActiveRecord::Base.establish_connection"#{Rails.env}_#{@fc}"
end
end
end

控制器:

class MyAppController < ApplicationController
before_filter :initialize_remote_user

   def self.search(name)
     @results = MyApp.search(params[:name])
     @dbase = params[:dbase].inspect
     c = MyApp.new(@dbase)
     result = c.last 
    end

   def result
     c = MyApp.new(@dbase)
     result = c.last
     @results =  MyApp.where("name = ?",params[:name]).order("item_scan_date ASC")
     puts @results.inspect
   end


   def update
    @results = MyApp.Where(name: name_params)
    @dbase = params[:dbase].inspect
    end

   def change
     @results = MyApp.Where(name: name_params)
     @dbase = params[:dbase].inspect
     end

   def show
    @dbase = params[:dbase].inspect
    c = MyApp.new(@dbase)
    result = c.last
   end

   def create
   end

   def new
   end

   def index
     @dbase = params[:dbase].inspect
     c = MyApp.new(@dbase)
     result = c.last
   end

  private

  def name_params
     params.require(:name).permit(:name)
  end

  def dbase_params
     params.require(:dbase).permit(:dbase, :id)
  end

end

下拉菜单在我的导航栏上并在 _nav.html.erb 中拉入:下面是 _dbform.html.erb

<div id="float_right">
<%= form_for @dbase do |f| %>
<%= f.select( :dbase, options_for_select([['DB01','DB01'],['DB02','DB02'],['DB03','DB03'],['DB04','DB04']])) %>
<% end %>

</div>

database.yml,生产和开发是一样的。

# Uses RubyGem-activerecord-jdbcsqlite3-adapter

development:
  adapter: mysql2
  host: myhost
  database: DB01
  encoding: utf8
  port: 3306

development_DB2:
  adapter: mysql2
  host: myhost
  database: DB02
  encoding: utf8
  port: 3306

development_DB3:
  adapter: mysql2
  host: myhost
  database: DB03
  encoding: utf8
  port: 3306

development_DB4:
  adapter: mysql2
  host: myhost
  database: DB04
  encoding: utf8
  port: 3306

我不确定我做错了什么。

【问题讨论】:

    标签: ruby-on-rails database jruby multi-database


    【解决方案1】:

    而不是控制器代码,查看错误的实际回溯可能会更有用......因为从中可能会找出 AR 和 AR-JDBC 版本,无论如何作为盲拍试试这个:

    if @dbase == 'DB01'
      ActiveRecord::Base.establish_connection "#{Rails.env}".to_sym
    else
      ActiveRecord::Base.establish_connection :"#{Rails.env}_#{@dbase}"
    end
    

    ...使用符号 + @dbase 似乎是我们需要的变量

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2022-08-19
      相关资源
      最近更新 更多