试图破坏模型,说错误的参数数量(0表示1)

时间:2012-03-04 17:47:05

标签: ruby-on-rails

我不确定为什么会收到此错误:

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,则可以正常工作。

这可能是什么?

2 个答案:

答案 0 :(得分:13)

uUser的集合,但destroy需要在单个用户或User的{​​{3}}上进行调用。你可以这样做:

u = User.where("guid = ?", guid).first

u = User.find_by_guid(guid)

答案 1 :(得分:0)

检查user.rb. 确保你的参数

dependent: :destroy

不是

dependent: destroy