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

我有两种型号特卖和餐厅

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

我无法弄清楚如何链接它们:restaurant_name控制器中的:restaurant_name

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

有任何想法吗?

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

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

:foreign_key

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

既然你知道如何实现你的关联 ,我应该指出世界上很多餐馆都有相同的名字,所以restaurant_name可能是一个糟糕的外键选择。

如果你必须说我认为这似乎是一个坏主意,因为如果名称改变链断裂。

 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将是另一个表中的键。