1

我有以下关系:

用户.rb

has_many :ownerships
has_many :restaurants, :through => :ownerships

餐厅.rb

has_many :ownerships
has_many :users, :through => :ownerships

我也有一个菜单模型belongs_to :restaurant

menu很明显,a和 a之间没有直接联系,user除非你通过restaurant.

我正在尝试使它只显示由创建的菜单user

通过这种方法,我只能显示当前登录用户创建的餐厅:

restaurant_controller.rb

class RestaurantsController < ApplicationController

  # GET /restaurants
  # GET /restaurants.json
  def index
    if current_user.has_role? :admin
      @restaurants = Restaurant.all
    elsif current_user.has_role? :user
      @restaurants = current_user.restaurants
    end
  end

我怎样才能通过通过在我的menus控制器下做同样的事情restaurant

我试过了:

@menus = current_user.restaurants.menus

@menus = current_user.restaurants.each.menus

除其他外,但似乎没有任何效果。我总是正确地undefined method获得 nil:NilClass , which I understand; I'm not getting to themenus` 的菜单。

我正在考虑制作一个循环,通过每个循环restaurant并添加menu附加到它,但我不是 100% 确定如何在menu控制器中做到这一点。

4

1 回答 1

1

如果您user像这样向模型添加新关联:

class User
  has_many :menus, :through => :restaurants

当您执行 acurrent_user.menus时,它会自动从您拥有的用户那里获取餐厅的所有菜单。希望能帮助到你。

于 2012-07-31T19:43:30.030 回答