利用可能なガイド/API/書籍を使用してRailsを独学していますが、関連付けを介した3方向/ネストされた has_many との結合を理解するのに問題があります。
メンバーシップを通じて、グループに接続されたユーザーがいます。
groupsを使用した多対多の投稿もあります。同じ投稿を複数のグループに投稿できます + グループには複数の投稿を含めることができます。
私ができるようにしたいのは、ユーザーのホームページに対して、ユーザーがメンバーであるグループの個別の投稿をすべて表示することです。
例えば。current_user.groups.posts # こんなに簡単だったらいいのに!!
これが私のコードです。
Models:
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
has_many :posts # as author of post
end
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
has_and_belongs_to_many :posts
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
class Post < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :groups
end
ルート.rb
Myapp::Application.routes.draw do
get "admin/index"
devise_for :users
resources :users do
member do
get :groups
end
end
resources :groups do
member do
get :members
post :join
post :leave
end
end
resources :posts
home_controller.rb#index
class HomeController < ApplicationController
before_filter :authenticate_user!
def index
@user = current_user
@groups = Group.all
@user_groups = @user.groups
@home_page_posts = Post.joins(:groups, :user)
end
end
これは明らかに、すべてのグループのすべての投稿の不明確なリストを提供するだけです。
誰かが私を正しい方向に向けることができれば。http://guides.rubyonrails.org/active_record_querying.html#joining-tablesを試しましたが、私が見る限り、どの例も当てはまりません。
私からさらに情報が必要な場合はお知らせください。:D