我有两种型号特卖和餐馆
我想显示每家餐厅的优惠。我不希望它们与: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 %>
任何想法?
答案 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
将成为其他表格中的密钥。