以下の関係で、特定のユーザーのすべての投稿を抽出しようとしています。それらが正しいかどうかわからないので、よりよく説明します。ユーザーは、いくつかのグループで所有権とメンバーシップを持っています。ユーザーは、グループのメンバーまたは所有者のいずれかになることができますが、両方になることはできません。すべての投稿には、ユーザーとグループの ID があります。問題は以下の関係によるものだと思います。どうすれば回避できますか?もう一つ。ユーザーのグループ内の他のユーザーによって投稿されたすべての投稿も検索する必要があります。つまり、グループを通過する必要があります。
/-- Owner ---\
User -- -- Group -- Post
| \-- Member --/ |
|_______________________________|
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
has_many :ownerships, :foreign_key => "user_id", :dependent => :destroy
has_many :memberships, :foreign_key => "user_id", :dependent => :destroy
# Problem with these two? I think so.
has_many :groups, :through => :memberships, :source => :user
has_many :groups, :through => :ownerships, :source => :user
class Ownership < ActiveRecord::Base
belongs_to :users, :class_name => "User"
belongs_to :groups, :class_name => "Group"
has_many :posts, :through => :groups, :source => :posts
class Membership < ActiveRecord::Base
belongs_to :users, :class_name => "User"
belongs_to :groups, :class_name => "Group"
has_many :posts, :through => :groups, :source => :posts
class Group < ActiveRecord::Base
has_many :posts, :dependent => :destroy
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :groups
エラーは次の行から発生しています。
_groups = user.groups
次のようなエラー:
モデルの所有権でソースの関連付け :user が見つかりませんでした。'has_many :groups, :through => :ownerships, :source => ' を試してください。:users、:groups、または :postings のいずれかですか?