我正在迭代哈希,如果哈希键与列名称(由 attr_accessible 定义)匹配,那么我想更新该列。
def self.load_primer3_output(rawfile_hash)
primer3_output = Primer3Output.new
rawfile_hash.each do |key, value|
if primer3_output.class.accessible_attributes.include?(key)
primer3_output.send(key) = value
end
end
primer3_output.save
end
我在发送时遇到语法错误:
** [out :: 192.241.193.126] /home/assay/apps/assay/releases/20130823054701/app/workers/primer3_query.rb:96: syntax error, unexpected '=', expecting keyword_end
** [out :: 192.241.193.126] (
** [out :: 192.241.193.126] SyntaxError
** [out :: 192.241.193.126] )
** [out :: 192.241.193.126]
** [out :: 192.241.193.126] primer3_output.send(key) = value
** [out :: 192.241.193.126]
** [out :: 192.241.193.126] ^
编辑
顺便说一下,eval 有效。不过我更喜欢使用发送。
if primer3_output.class.accessible_attributes.include?(key)
#primer3_output.send(key) = value
eval("primer3_output.#{key} = value")
end
最佳答案
更改为
primer3_output.send("#{key}=", value)
关于ruby-on-rails - 通过发送更新 ActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395679/