2012-04-04 7 views
1

twitterを使ってすべての言及を抽出するアプリケーションをビルドしているので、私は言及したすべてのユーザーを保存するプロファイルモデルを持っています。そのテーブルでは、twitter APIによって取得されたIDを格納するtwitter_idフィールドと、同じ名前を持つdescription、screen_nameなどの他のフィールドがあります。Twitter GemとRailsがユーザーを保存する

# a.tc is a Twitter object already authenticated 
    tws = a.tc.mentions({:count => 200}) 

    # foreach mention 
    tws.each do |t| 
    # Check if we already have it saved 
    p = Profile.find_by_twitter_id t.user.id 
    if p.nil? 
     # Profile doesnt exist, try to save it 
     p = Profile.new(t.user.to_hash) # ERROR! 
     p.twitter_id = t.user.id 
     p.save 
    end 

私はすでにエラーは、IDを削除したり、Profileで使用可能な属性だけを割り当てるためにどちらかの必要なルビーのnoobイム= P

+0

は、なぜあなたは '' Profile.new(t.user.to_hash)を使用しない、正確に何がエラーと何がやろうとしているのですか?事故によって属性を割り当てることができないので、これは良い方法でありますか –

+0

t.userは、TwitterのgemのUserオブジェクトです.typusからのいくつかのキー(Twitter :: User)をフィールドとして持つProfileテーブルを作成しました。例えば、screen_name、description、locationですが、他のキーはありません私のモデルに存在するため、すべてのデータに興味がありません。エラー: "警告:保護された属性を一意に割り当てることはできません:id"エラーを理解していますが、プロファイルにユーザーを保存する方法や、各フィールドでハッシュを作成する必要があります名? –

答えて

2

...多くのことが、すべてのtrowsを試してみました:

usr = t.user.to_hash 
    usr.delete :id # or "id", I'm not sure how the Hash looks like exactly 
    ## delete all the other keys that are not neccessary 
    p = Profile.new usr 

またはこの方法ではを使用します。あなたは

p = Profile.new (:screen_name => t.user.screen_name, ... and so on...) 
+0

このように思えますが、回答ではなくコメントでなければなりません。 –

+0

いいえ、これは私が集めることができるOPの質問に対する回答です。 – henrikhodne

+1

また、私は後者の方法で行くだろう。いくつかのキーだけが必要なので、他のキーを削除するのではなく、それらのキーを明示することをお勧めします。たとえば、screennameを除くすべての属性を必要としていたら、 "delete key"メソッドを使います。 – henrikhodne

関連する問題