2010-11-23 7 views
2

私はRailsアプリケーション用のAPIを作成していますが、UserオブジェクトをAPI呼び出しに返しますが、crypted_passwordsalt、またはlogin_token属性は返しません。モデルオブジェクトを返す際のRuby on Rails属性のフィルタリング

このような何かを行うにはどのような方法があります:これはあなたのケースでうまくいくかもしれない

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

答えて

2

、でも、私は個人的にそれを試していません。 オブジェクトを返す前に、Filtered Attributesをnilにリセットしてみてください。

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

、おかげで働いたこと –

+0

:)それが動作するかどうか私に知らせたりしないでください。それでも属性は返されますが、空の文字列として返されます。 Hash.delete(:属性)のようなものがあるのだろうか? –

+0

これを試してみるといいかもしれません:http://www.ruby-doc.org/core/classes/Hash.html#M002898 user.delete( "crypted_pa​​ssword")を使って、あなたが望むものを達成できるようです。 –

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

エラー:NoMethodError:#<配列:0x5190258>の属性が未定義です。または、スコープ付きのの場合 – user938363

+0

ここでは配列ではなく、モデルインスタンスを渡す必要があるからです。例えば、あなたがユーザーの配列を持っていれば、その呼び出しは 'users.each {| u | api_fetch_user(u)} ' –

関連する問題