似ている 2 つのモデルがあるとします。1 つは、Primer3Parameter のフィールドのサブセットを保持する Primer3Template と呼ばれます。
Primer3Parameter に存在する Primer3Template のフィールドのみを置き、フィールド名を大文字にし、文字列補間を追加したいと思います。次のように、コードが部分的に機能しています。
> t = Primer3Template.new
> @primer3_parameter = Primer3Parameter.where(:batch_detail_id => 7146)
> t.attributes.each do | name, value |
> puts "#{name.upcase}="
> end
これまでのところ、これは次のように出力されます。
ID=
TYPE=
USER_ID=
BATCH_DETAIL_ID=
GENERATED=
STATUS=
P3_FILE_TYPE=
....etc
次に、ループによって処理されている現在の名前と同じ名前を持つ @primer3_parameter 変数からフィールドの値を出力しようとしています。私はこれを試しました:
> t.attributes.each do | name, value |
> puts "#{name.upcase}=#{@primer3_parameter.name}"
> end
しかし、これはクラスの名前を出力していますが、これは私が望むものではありません:
ID=Primer3Parameter
TYPE=Primer3Parameter
USER_ID=Primer3Parameter
BATCH_DETAIL_ID=Primer3Parameter
GENERATED=Primer3Parameter
いくつかのフィールドをスキップして、フィールドの値を次のように出力したい:
BATCH_DETAIL_ID=7146
GENERATED=true
STATUS=active
P3_FILE_TYPE=Type2
私もこれを試しました:
> t.attributes.each do | name, value |
> x = "@primer3_parameters.first.#{name}"
> puts "#{name.upcase}=#{x}"
> end
それは私に与えました:
ID=@primer3_parameters.first.id
TYPE=@primer3_parameters.first.type
USER_ID=@primer3_parameters.first.user_id
BATCH_DETAIL_ID=@primer3_parameters.first.batch_detail_id
GENERATED=@primer3_parameters.first.generated