【发布时间】:2021-05-12 21:39:19
【问题描述】:
我在用户模型中有这个功能
def send_request(user_id)
unless Friendship.exists?(self.id,user_id)
Friendship.create(sender_id:self.id, receiver_id:user_id)
end
end
在 Rails 控制台中 u1 = User.find(1)
然后u1.send_request(2)
我看到ArgumentError(wrong number of arguments (given 2, expected 0..1)expected 0..1是什么意思?为什么给它2?
【问题讨论】:
-
我猜
Friendship.exists?(self.id,user_id)给出了错误。除非你破坏了ActiveRecord::FinderMethods#exists?,否则它定义为exists?(conditions = :none)。这给出了0..1的数量,因为它有一个带有默认值的参数。当然,如果没有适当的堆栈跟踪,我们无法真正知道。 idownvotedbecau.se/noexceptiondetails -
这可能是stackoverflow.com/questions/37244283/…的副本(至少在精神上)
-
我使用了 Rails 控制台,这就是为什么我不知道哪一行给出了这个错误。我将函数名称从存在更改? to requested_before 所以它不会与rails的内置功能混淆,所以现在可以工作了谢谢
标签: ruby-on-rails rails-activerecord