2010-11-23 2 views
2

Я создаю API для приложения Rails, и хочу вернуть объекты для вызова API, но без crypted_password, salt или login_token.Ruby on Rails атрибуты фильтрации на возвращаемом объекте модели

Есть ли способ сделать что-то вроде этого:

do api_fetch_user(u) 
    user=User.find(u) 
    return user(:filter=>"crypted_password", "salt", "login_token") 
end 

ответ

2

Это может работать в вашем случае, я не пробовал, что лично хотя. Попробуйте сбросить фильтрованные атрибуты до нуля, прежде чем возвращать объект.

do api_fetch_user(u) 
    user=User.find(u) 
    user.crypted_password = '' 
    user.salt = '' 
    user.login_token = '' 
    return user 
end 
+0

дайте мне знать, если это работает или нет :) – 2010-11-23 18:32:41

+0

Это работало, спасибо. Он по-прежнему возвращает атрибуты, но как пустые строки. Интересно, есть ли что-то вроде Hash.delete (: attribute)? – 2010-11-24 01:41:19

2
def api_fetch_user(user) 
    user.attributes.select { |key,v| AVAILABLE_USER_FIELDS.include?(key) } 
end