选择会对模型
一个唯一的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
他们联系呢?
如果你一定要说我可能会认为这是一个坏主意,因为如果名称改变链断裂。
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
将成为另一张表格中的关键字。
我想显示每家餐厅的优惠。我不希望它们链接在:restaurant_id,而是我希望它们链接在:restaurant_name。
从数据库的角度来看,假设一个关系型数据库,你deals
表将有一个外键是引用restaurants
。现在,你知道该怎么称呼它,belongs_to
文档的这一部分应该回答你的问题:
:foreign_key
指定用于关联的外键。默认情况下,这个猜测是用“_id”后缀协会的名称...
现在你已经知道如何实现您协会,我要指出的是,许多餐馆世界共享同一个名字,所以restaurant_name
可能是外键差的选择。
+1的数字出来的方法和指出这可能是一个糟糕的设计理念,因为我完全同意这两个方面。尽管我确实也指定了答案。 – engineersmnky 2014-09-05 20:40:35
雅我同意糟糕的设计,它不那么我会这样做,尽可能多我想知道如何做到这一点。不过谢谢。 – Seal 2014-09-05 20:46:58
如果我不添加名称,比每次添加交易我都必须记住restaurant_id? – Seal 2014-09-05 21:31:58
你的意思是这样的吗? http://stackoverflow.com/questions/17755815/ruby-on-rails-find-by-field-other-than-id – Matt 2014-09-05 20:31:58
@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