10

私は今日、自己参照 has_many :through data の状況について読んでいました。なぜなら、それらを使用する Rails アプリケーションを構築しようとしているからです。この例の状況をインターネットで見つけたので、質問があります。この男のブログからこのサンプル コードを投稿させてください。

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

データベースの最初の動物を一覧表示する Web ページを作成しているとします。この見出しの下には、パーセンテージのリスト (capture_percent) があります。各パーセンテージは、このページの動物が狩る動物を参照していますが、動物の名前はわかりません。パーセンテージだけです。特定のパーセンテージをクリックすると、対応する動物のページに移動します。

これはあなたの頭を包み込むのが難しい質問だと思いますが、私はそれを理解しようとしています. おそらく、CapturePercent 用に別のテーブルを作成する必要がありますか?

4

1 に答える 1

9

おそらく、CapturePercent 用に別のテーブルを作成する必要がありますか?

まったく、これについて複雑なことはないようです。

<ul>
<% @animal.pursuits.each do |pursuit| %>
  <li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
<% end %>
</ul>
于 2008-12-13T10:06:23.650 に答える