私はプラグインを作成しています。このプラグインでは、プラグイン内で新しいリレーションを動的に定義しています。サンプルコードはインスタンス変数に保存されたモデルの属性を取得する方法
class Person < AtiveRecord::Base
attach_documents_as :financial_documents
end
は今、この
def initialize(*args)
super(*args)
"#{@as}".build
end
のようにオーバーロードされたinitializeメソッドでクラスのこの属性にアクセスしたいアクセスしたいと私はそれを使用するすべてのモデルになりました
module AttachDocumentsAs
@as = nil
def attach_documents_as(*attachment_as)
attachment_as = attachment_as.to_a.flatten.compact.map(&:to_sym)
@as = attachment_as.first
class_inheritable_reader(@as)
class_eval do
has_many @as, :as => :attachable, :class_name=>"AttachDocuments::Models::AttachedDocument"
accepts_nested_attributes_for @as
end
end
end
以下に示します。
しかし、それは必要な属性を取得していない、誰も私にそれを助けることができます。私はこの関係を構築し、いくつかの初期値を設定したいと思います。
皆さんからのガイドラインを待っています。
私は class_inheritable_reader(@As) class_inheritable_reader使用(:atd_as) write_inheritable_attributeを(:atd_as、@As)今の内側 とは、私は self.send(self.send(とそれを得ることができます初期化:atd_as)) しかし、問題はビルドを呼び出すことです。 self.send(self.send(:atd_as))ビルド は動作しません。 –