我不确定为什么会收到此错误:
wrong number of arguments (0 for 1)
app/models/user.rb:38:in `sign_out_by_guid'
app/helpers/user_helper.rb:11:in `sign_out'
app/controllers/users_controller.rb:18:in `destroy'
我的代码:
def self.sign_out_by_guid(guid)
puts 'currently in sign_out_by_guid' + guid
u = User.where("guid = ?", guid)
puts u.inspect
puts 'before destroy'
u.destroy
puts 'called destroy'
end
我可以看到最后一个所有的输出预期“被称为毁灭”
所以这意味着肯定会调用u.destroy
。
如果我尝试在rails console
中获取记录,并在用户上调用destroy,则可以正常工作。
这可能是什么?
答案 0 :(得分:13)
u
是User
的集合,但destroy
需要在单个用户或User
的{{3}}上进行调用。你可以这样做:
u = User.where("guid = ?", guid).first
或
u = User.find_by_guid(guid)
答案 1 :(得分:0)
检查user.rb. 确保你的参数
dependent: :destroy
不是
dependent: destroy