1

私は次の関係を持っています:

user.rb

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

レストラン.rb

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

Menu モデルもありますbelongs_to :restaurant

明らかに、を経由しない限り、 amenuと a の間に直接のリンクはありません。userrestaurant

によって作成されたメニューのみが表示されるようにしようとしてい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 methodnil:NilClass menus`のメニューは常に, which I understand; I'm not getting to the適切に取得されます。

それぞれを通過し、それに接続されたrestaurantを追加するループを作成することを考えていますが、コントローラーmenu内でそれを行う方法が 100% わかりません。menu

4

1 に答える 1

1

user次のようにモデル に新しい関連付けを追加する場合:

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

を実行するcurrent_user.menusと、レストランのすべてのメニューがユーザーから自動的に取得されます。それが役に立てば幸い。

于 2012-07-31T19:43:30.030 に答える