在我当前的数据库设置中,我有一个用户和一个服务器表。我可以从rails控制台执行current_user.server之类的操作,但是我无法从resque worker中执行此操作。但是,由于我的resque worker中的代码,我可以调用current_user.name:
current_user = User.find(current_id)
我能够通过将current_user的id传递给worker来完成此操作。我以为我可以对用户的服务器表使用相同的过程;它是一个has_one user->服务器关系。
所以我尝试了这个:
current_server = Server.where(:user_id => current_user.id)
current_server[:cloudserver] = 123 #Just an example number
current_server.save
第一行工作正常,它返回了正确的服务器行。但是,当我还包括第二行时,我收到一个错误:
TypeError can't convert Symbol into Integer
我知道我将cloudserver列创建为整数类型,并确保我在resque worker中加载了rails环境。我可以使用rails控制台设置正确的数字:
current_user.server[:cloudserver] = 123
current_user.save
由于我可以将它设置在resque工作者之外,我很确定这是一个resque问题。
哦,如果有帮助的话,我也在运行rails 3.1rc4。 谢谢大家!