假设我有两个相似的模型。一个称为 Primer3Template,它包含 Primer3Parameter 上的字段子集。
我想只放置 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