0

基本的に、別のアプリのデータベースに接続する必要があります。接続を行ったconfig/database.ymlので、そのデータベースはRailsアプリからのものではないため、最初はテーブル名が複数形になっておらずestablish_connection、それらすべてにを追加する必要があります。親クラスを作成して他のクラスを継承しようとしましたが、正しく理解できず、親クラスにテーブルがないことを不平を言い続けています。それに追加abstract_classすると、子モジュールも抽象化されます-。 -

どうすれば少し乾かすことができますか

アップデート

これはうまくいきました...

class QB < ActiveRecord::Base
  self.abstract_class = true
  establish_connection 'quickbooks'

  def self.pluralize_table_names
    false
  end
end

なぜpluralize_table_namesをそのようにする必要があるのか​​はよくわかりませんが、abstract_class@zeteticのヒントに感謝します。

アップデート

親クラスでこれを使用しました、私の場合により良い

def self.table_name
    self.name.gsub(/QB::/,'').downcase
end
4

1 に答える 1

1

それにabstract_classを追加すると、子モジュールも抽象になります

これは当てはまらないはずです。self.abstract_class = trueクラスsingletonにインスタンス変数を設定します。'クラスインスタンス変数'。これはサブクラスによって共有されません:

class A < ActiveRecord::Base
  self.abstract_class = true
end

class B < A; end

A.abstract_class # true
B.abstract_class # nil

このMartinFowlerのブログ投稿では、何が起こっているのかをより詳細に説明しています。

于 2012-08-07T03:37:51.857 に答える