【问题标题】:Problem with self-referential has_many :through associations in Rails自引用 has_many 的问题:通过 Rails 中的关联
【发布时间】:2010-09-26 18:26:11
【问题描述】:

我正在阅读关于自我引用 has_many :through 数据情况的文章,因为我正在尝试构建一个使用它们的 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 创建一个单独的表?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord associations


    【解决方案1】:

    我是否必须为 CapturePercent 创建一个单独的表?

    一点也不,这似乎没有什么复杂的:

    <ul>
    <% @animal.pursuits.each do |pursuit| %>
      <li><%= link_to "#{pursuit.capture_percent}%", pursuit.prey %></li>
    <% end %>
    </ul>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-23
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多