2010-12-31 17 views
0

私はソーシャルデータを追跡しているレールアプリを持っています。ユーザーは、グループを作成し、そのページのソーシャルIDによってページ(つまり、Facebookのファンページ)をグループに追加できるようになります。ユーザーは他のユーザーとしてページを追加する可能性があるため、ソーシャルIDごとに1ページしかないように設定しています。また、グループとユーザーにページをリンクするCatgorizationsというピボットテーブルもあります。Rails 3はbelongs_toアソシエーションのパラメータを設定します

 

User 
    has_many :groups 

Group 
    belongs_to :user 
    has_many :categorizations 
    has_many :pages, :through => :categorizations 

Page 
    has_many :categorizations 
    has_many :groups, :through => :categorizations 

Categorization 
    belongs_to :group 
    belongs_to :page 

を今、私は新しいページを作成するとき、それは新しい分類を作成して、保存します。次のように

私のモデルの関係が設定されています。私が実行している問題は、Categorizationでuser_idを手動で設定する必要があるということです。私は試しました:

しかし、私はuser_idエラーが発生しました。間違った方向からアプローチしているかもしれませんが、ページオブジェクトを通じてカテゴリのuser_idを設定する方法はありますか? また、重要であれば、私はユーザー管理のものを扱うためにdeviseを使用しています。
ご協力いただければ幸いです。
ありがとう

答えて

0

あなたがするトリングているものにアクセスすることです「連鎖した」関係の中でいくつかの深いものがある。

ユーザーモデルのインスタンスにアクセスするには、ページがあれば、そのカテゴリを取得し、そのグループを取得し、そのグループのuser_idが何であるかを確認する必要があります。

概念的には、ページには実際にはそれを分類する担当者が多数存在します。あなたに起こること何かを取得するには

が任意に最初の分類を選択して、そのユーザーに何かができる:

cat = @page.categorizations.first 
user = cat.group.user 

私はあなたが「設定」について何を意味するのか分からないためのユーザーIDをカテゴリ化 - ユーザーがいないため、その情報で何をしたいのか分かりません。申し訳ありません。

+0

私はあなたに最後の文の答えを与えています。あなたは正しい、私の分類はそれに関連付けられたuser_idを持つ必要はありません。ユーザーに属しているグループを通してページにアクセスできるためです。ありがとう – iangraham

+0

ああ!うれしいことは解決されました。 – stef

0

あなたの説明とあなたのモデルから、ページには分類だけでなくユーザがあります。なぜなら、あなたのデータベースには存在しないというエラーが表示されるからです。

また、あなたがページ上の反対協会不足している:

Page 
    belongs_to :user 

をこれは、あなたがページから戻ってユーザーに取得することができます:

@page.user.id 
+0

混乱して申し訳ありませんが、私はグループにbelongs_to関係を追加するのを忘れていました。私はそれを反映するために私の質問を更新しました。 My Pagesテーブルにはuser_idカラムがありません。なぜなら、多くのユーザが自分のグループを通じて同じページデータにアクセスできるからです。 has_many:usersを私のPagesモデルに追加する必要がありますか? – iangraham

関連する問題