環境:
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 を使用して実証されたより簡単な方法に非常に興味があります。