2011-08-16 170 views
0

即時通訊工作模型關聯類的分配。基本協會的作品,但即時通訊與「類別」 - 頁面視圖的問題。軌道模型關聯問題

類別頁面輸出應該是(/類別/ 1)

  • 碟-ID
  • 碟形標題
  • 餐廳-標題< =如何獲得此值?

規則: - 菜屬 一個類別 - 同一盤可以在多個餐館

class Category < ActiveRecord::Base 
    has_many :dishes 
end 

class Dish < ActiveRecord::Base 
    belongs_to :category 
end 

class Restaurant < ActiveRecord::Base 
    has_and_belongs_to_many :dishes 
end 

class DishRestaurant < ActiveRecord::Base 
    has_many :restaurants 
    has_many :dishes 
end 

類別控制器

def show 
    @category = Category.find(params[:id]) 
    @dishes = @category.dishes 
    // RESTAURANT TITLE ?? 

respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @category } 
end 

分類視圖: <%=調試@dishes %>

任何提示將是很有幫助。

感謝

皮特

回答

1

定義你的模型正確:

class Dish < ActiveRecord::Base 
    belongs_to :category 
    has_and_belongs_to_many :restaurants 
end 

class Restaurant < ActiveRecord::Base 
    has_and_belongs_to_many :dishes 
end 

這將使用隱式連接的表名 「dishes_restaurants」。你只需要一個連接模型就是你存儲一些連接的具體信息,比如餐廳裏菜的價格。在你的模型的情況下應該是這樣的:

class Dish < ActiveRecord::Base 
    belongs_to :category 
    has_many :dish_restaurants 
    has_many :restaurants, through => :dish_restaurants 
end 

class Restaurant < ActiveRecord::Base 
    has_many :dish_restaurants 
    has_many :dishes, through => :dish_restaurants 
end 

class DishRestaurant < ActiveRecord::Base 
    belongs_to :restaurant 
    belongs_to :dish 
end 

你跟着不管的方式,你可以做dish.restaurants要檢索的服務的菜餐館的名單。