2016-08-23 13 views
0

私は次のようにクラスを持っていますUser.new.attributesです。未定義のローカル変数は

それは実際に私は単純にやって、同じエラーを取得し、ループによるものではないのです。

class TempUser < Struct.new(:user) 
    test = user 
end 

私は、任意のアイデアを、私は何かを逃したが、私はそれが何であるか見当もつかないと思いますか?

EDIT

それは私の例では関連性がないかもしれないが、私のニーズのために私は、ユーザーの属性が必要になりますので、私はUser.columns.map(&:name)ようなもので滞在することはできません。

+0

でそれを行うことができると思いますが、 '使用して試してみました:代わりに' user.attributes.keys.each'のuser.attributes.keys.each'を? – amine

+0

:ユーザーは動作できないシンボルです – Charrette

+0

'user'は何を期待していますか?あなたは何をしようとしているのですか? –

答えて

0

ルビーは、このクラスを解析する際には、エラーメッセージから明らかなクラス変数としてuserを理解するためにあなたは、このエラーを持っている:'user' for TempUser:Class

そして:user、それはインスタンス変数です:

TempUser = Struct.new(:user) 
tmp = TempUser.new(User.last) 
=> #<struct TempUser user=#<User id: 1>> 

すべてのユーザー同じ属性を持っていれば、私はあなたが次のようなものを使うことができると思います:User.columns.map(&:name)

EDIT

は、各ユーザーが異なる属性を有することができる場合、私はあなたがmethod_missing

TempUser = Struct.new(:user) do 
    def method_missing(m, *args, &block) 
    return user.send(m) if user.respond_to?(m) 
    super 
    end 
end 
+0

私の質問を編集しました – Charrette

関連する問題