2014-09-05 54 views
0

一個唯一的ID,其值我有兩個車型優惠和餐館選擇會對模型

我想顯示每個餐廳的交易。我不希望他們鏈接在:restaurant_id上,而是我希望他們鏈接在:restaurant_name上。

我無法弄清楚的是如何在控制器

restaurant controller 

def show 
    @restaurant = Restaurant.find(params[:id]) 
    @deals = @restaurant.deals 
end 



show.html.erb 

<% restaurant.deals.each do |deal| %> 
     <h2><center><%= deal.day %></center></h2> 
<% end %> 

任何想法上:restaurant_name他們聯繫呢?

+1

你的意思是這樣的嗎? http://stackoverflow.com/questions/17755815/ruby-on-rails-find-by-field-other-than-id – Matt 2014-09-05 20:31:58

+0

@Matt,我認爲[that question](http://stackoverflow.com/問題/ 17755815/ruby​​-on-rails-find-by-field-other-than-id)是指'find',但是OP詢問'belongs_to' – 2014-09-05 20:38:41

回答

0

如果你一定要說我可能會認爲這是一個壞主意,因爲如果名稱改變鏈斷裂。

class Restaurant 
    has_many :deals, foreign_key: "restaurant_name", primary_key: "name" 
end 
class Deals 
    belongs_to :restaurant, foreign_key: "restaurant_name", primary_key: "name" 
end 

這假設模型Restaurant使用name,而不是restaurant_name但概念是has_manyforeign_key將是關鍵中的其他表使用,primary_key將在當前表的鏈接。 belongs_toforeign_key將是當前表格中使用的關鍵字,而primary_key將成爲另一張表格中的關鍵字。

1

我想顯示每家餐廳的優惠。我不希望它們鏈接在:restaurant_id,而是我希望它們鏈接在:restaurant_name。

從數據庫的角度來看,假設一個關係型數據庫,你deals表將有一個外鍵引用restaurants。現在,你知道該怎麼稱呼它,belongs_to文檔的這一部分應該回答你的問題:

:foreign_key

指定用於關聯的外鍵。默認情況下,這個猜測是用「_id」後綴協會的名稱...

現在你已經知道如何實現您協會,我要指出的是,許多餐館世界共享同一個名字,所以restaurant_name可能是外鍵差的選擇。

+0

+1的數字出來的方法和指出這可能是一個糟糕的設計理念,因爲我完全同意這兩個方面。儘管我確實也指定了答案。 – engineersmnky 2014-09-05 20:40:35

+0

雅我同意糟糕的設計,它不那麼我會這樣做,儘可能多我想知道如何做到這一點。不過謝謝。 – Seal 2014-09-05 20:46:58

+0

如果我不添加名稱,比每次添加交易我都必須記住restaurant_id? – Seal 2014-09-05 21:31:58