0

環境:

CentOS-6.7 / OSX-10.9.5
Ruby 2.2.3p173 (probably time for an update)
Rails 4.2.5.1
Trailblazer 1.1.0

Trailblazer Book の演習に取り組んでおり、既存のプロジェクトの要素を本の例にマッピングしようとしています。当面のプロジェクトでは、AR 継承を使用して、単一の基になるテーブルのモデル エイリアスを作成します。以下に例を示します。

class ARAccount< GLAccount
  after_initialize( :set_sub_ledger,  { :if => :new_record? } )
  has_one(  :active_client,
            -> { where IsActiveRow },
            :class_name => 'ARClient',
            :dependent => :restrict_with_error,
            :foreign_key => :gl_account_id
         )

  def gl_sub_ledger=( code )  # No change to sub_ledger value allowed
     gl_sub_ledger ||= AR_SUB_LEDGER   # Return 'AR' if not saved
  end

  private

  def set_sub_ledger          # set fixed value for AR sub_ledger
    write_attribute( :gl_sub_ledger, AR_SUB_LEDGER ) if new_record?
  end

  self.inheritance_column = :gl_ledger
  def sti_name
    "ASST"
  end
end

これが機能する方法は、バリアント モデル定義ごとに列の値が「固定」されているが、基になるテーブルと行はすべてのバリアントで同一であるという点で、単一テーブルの継承から借用されています。

operation.rbこれがar_invoice の懸念内のファイル内でどのように処理されるかについて、私は多少混乱しています。この AR セットアップは、継承を処理するための AR とのいくつかの闘争の後に進化したため、Trailblazer を使用して実証されたより簡単な方法に非常に興味があります。

4

1 に答える 1