我正在尝试遍历ActiveModel::Model
中的attr_accessor-able变量,然后根据它们从db中获取相应的记录,问题是它没有找到记录。
class DeployOptionForm
include ActiveModel::Model
attr_accessor :revision_number
end
这是我试图获得它们的代码。
dof.instance_variables.each do |var_sym|
dof_var = dof.instance_variable_get(var_sym)
var_sym.to_s.slice!(0).to_sym
doe = DeployOption.new
doe.value = dof_var
doe.deploy_option_type = DeployOptionType.find_by name: var_sym
doe.deploy = @deploy
doe.save
end
我知道如果我这样做
doe.deploy_option_type = DeployOptionType.find_by name: :revision_number
记录被发现很好,但我试图让它更具适应性。
那么我需要做些什么var_sym
才能DeployOptionType.find_by name: var_sym
?
答案 0 :(得分:1)
var_sym.to_s.slice!(0).to_sym
没有做任何事情。 var_sym
就像你做完这一切之前的那样。
您需要var_sym = var_sym.to_s.slice(0).to_sym
答案 1 :(得分:1)
解决了!
结束必须这样做
var_sym = var_sym.to_s
var_sym.slice!(0)
var_sym = var_sym.to_sym
编辑: 实际上这是一个更好的解决方案,并在一行中完成!
var_sym = var_sym.to_s.slice(1..-1).to_sym