2016-02-11 2 views
1

я следующее:предупреждающее сообщение при запуске функции

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`. 

, что он пытается сказать мне, и как я могу исправить Это?

ответ

3

Только для теста ... Я не уверен, что вы передаете, который присваивается параметру tmp_id, но я бы предположил его активный объект записи, можете ли вы попробовать это?

def toggle_follow_user tmp_id 
    user=User.find(tmp_id.id) 
end 

Если это работает, потому что его все, что вы посылали в toggle_follow_user была целая активная запись «строка», где поиск хочет целое сейчас (представляющий идентификатор ... это используется, чтобы вытащить его из родной, но похоже, уходит)

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 его внутри метода, а затем посмотреть на вызов или два вниз ваш трассировки стека, потому что весь объект, который передается в.

Смежные вопросы