选择要在模型上具有唯一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
将是另一个表中的键。