我有以下内容:
def toggle_follow_user tmp_id
user=User.find(tmp_id)
但是当我运行规格时,我收到以下警告:
DEPRECATION WARNING: You are passing an instance of ActiveRecord::Base to `find`. Please pass the id of the object by calling `.id`.
它试图告诉我什么,我该如何解决?
答案 0 :(得分:4)
仅仅是为了测试...我不确定你传入的是什么被分配给tmp_id参数,但是我猜测它是一个活动的记录对象,你能试试吗?
def toggle_follow_user tmp_id
user=User.find(tmp_id.id)
end
如果这样可行,那么因为你发送到toggle_follow_user
的任何内容都是一个完整的活动记录" row"现在,Find想要一个整数(表示ID ...它曾经用于将其拉出来,但看起来似乎已经消失了)
答案 1 :(得分:0)
您正在呼叫toggle_follow_user(a_user)
,而不是toggle_follow_user(a_users_id)
。试试这个:
def toggle_follow_user(user)
# just delete the line where you ::find the user, you're already passing it in
这将解决此特定问题 - 但请检查它是否会破坏您的代码中的任何其他内容!
如果 希望在方法中传递用户的id
和find
,那么在堆栈跟踪中查看一两个调用,因为它是整个对象正在传递。