2008-12-13 31 views
9

Tôi đã đọc về has_many tự tham khảo: thông qua các tình huống dữ liệu ngày hôm nay, bởi vì tôi đang cố gắng xây dựng một ứng dụng Rails sử dụng chúng. Tôi đã tìm thấy số này example situation trên Internet và tôi có câu hỏi về nó. Hãy để tôi đăng mã ví dụ này từ blog của anh chàng này:Vấn đề với has_many tự tham chiếu: thông qua các liên kết trong 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 

Giả sử tôi đang tạo trang web liệt kê động vật đầu tiên trong cơ sở dữ liệu của nó. Bên dưới nhóm này là danh sách tỷ lệ phần trăm (capture_percent). Mỗi phần trăm đề cập đến một động vật mà động vật của trang này săn tìm, nhưng nó không cho bạn biết tên của động vật, chỉ là phần trăm. Nhấp vào bất kỳ phần trăm nhất định nào sẽ đưa bạn đến trang của động vật tương ứng.

Đây là một câu hỏi khó để quấn đầu, tôi biết, nhưng tôi đang cố gắng tìm ra. Tôi có phải tạo một bảng riêng cho CapturePercent không?

Trả lời

8

Tôi có phải tạo một bảng riêng cho CapturePercent không?

Không gì cả, có vẻ không phải là bất cứ điều gì phức tạp về điều này:

<ul> 
<% @animal.pursuits.each do |pursuit| %> 
    <li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li> 
<% end %> 
</ul> 
Các vấn đề liên quan