今天,通过数据的情况下,因为我试图建立使用它们Rails应用程序:

我在阅读有关自我指涉的has_many。我发现这个例如的情况下,我有一个关于它的问题。让我从这个家伙的博客张贴此示例代码:

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一个单独的表,也许?

有帮助吗?

解决方案

  

我本来创建CapturePercent一个单独的表,可能?

也没有,似乎没有将复杂的事情这一点:

<ul>
<% @animal.pursuits.each do |pursuit| %>
  <li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top