我正在阅读自我引用has_many:通过今天的数据情况,因为我正在尝试构建一个使用它们的Rails应用程序。我在互联网上发现了这个example situation,我对此有疑问。让我在这个人的博客中发布这个示例代码:
create_table :animals do |t|
t.string :species
end
create_table :hunts do |t|
t.integer :predator_id
t.integer :prey_id
t.integer :capture_percent
end
class Animal < ActiveRecord::Base
has_many :pursuits, :foreign_key => 'predator_id',
:class_name => 'Hunt',
:dependent => :destroy
has_many :preys, :through => :pursuits
has_many :escapes, :foreign_key => 'prey_id',
:class_name => 'Hunt',
:dependent => :destroy
has_many :predators, :through => :escapes
end
class Hunt < ActiveRecord::Base
belongs_to :predator, :class_name => "Animal"
belongs_to :prey, :class_name => "Animal"
end
假设我正在构建一个列出其数据库中第一个动物的网页。此标题下方是百分比列表(capture_percent)。每个百分比指的是这个页面的动物狩猎的动物,但它不会告诉你动物的名字,只是百分比。点击任何给定的百分比,您将进入相应的动物页面。
这是一个很难解决的问题,我知道,但我想弄清楚。我是否必须为CapturePercent创建一个单独的表,可能吗?
答案 0 :(得分:8)
我是否必须为CapturePercent创建一个单独的表?
完全没有,似乎没有任何复杂的事情:
<ul>
<% @animal.pursuits.each do |pursuit| %>
<li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>