选择在模型上具有唯一ID的值

时间:2014-09-05 20:21:56

标签: ruby-on-rails ruby activerecord

我有两种型号特卖和餐馆

我想显示每家餐厅的优惠。我不希望它们与:restaurant_id相关联,而是希望它们与:restaurant_name相关联。

我无法弄清楚如何在控制器中的: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 %>

任何想法?

2 个答案:

答案 0 :(得分:1)

  

我想显示每家餐厅的优惠。我不希望它们链接在一起:restaurant_id,而我希望它们链接在一起:restaurant_name。

从数据库的角度来看,假设关系数据库,您的deals表将具有外键 引用 restaurants。既然您知道该怎么称呼它,belongs_to文档的这一部分应该回答您的问题:

  

:foreign_key

     

指定用于关联的外键。默认情况下,这被认为是具有“_id”后缀的关联的名称......

现在你知道如何来实施你的关联,我应该指出世界上很多餐馆都有相同的名字,所以restaurant_name可能是外键选择不好。

答案 1 :(得分: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_many foreign_key将是在另一个表中使用的关键并且primary_key将成为当前表格中的链接。belongs_to foreign_key将成为当前表格中使用的密钥,primary_key将成为其他表格中的密钥。