【发布时间】:2012-11-27 23:36:52
【问题描述】:
我正在使用可用的指南/api/书籍自学 Rails,但我无法理解与三路/嵌套 has_many 的连接:通过关联。
我有用户与群组:通过会员联系。
我也有 posts 与 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
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#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
【问题讨论】:
标签: join ruby-on-rails-3.2 has-many-through