我在教導自己Rails使用指南/ apis/books可用,但我無法理解用三種方式連接/嵌套has_many:通過關聯。使用三種方式關聯/ has_many查詢:通過/ join
我用戶與組連接:通過成員。
我也有的帖子在多對多的羣。相同的帖子可以發佈到許多組+組可以有很多帖子。
我希望能夠做的就是爲用戶的主頁,顯示全部爲組的用戶是其成員的不同崗位。
例如。 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
的routes.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#指數
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
太謝謝你了!這完全符合我的需要。看起來我需要更多地瞭解過濾器。再次感謝! – pedrogrande
不客氣!我也從中學到了一些東西。 –