«Унаследованные» данные в Rails - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть модель данных, которую я хочу описать в Rails.Есть много Entity, каждый has_many :blobs, и каждый Blob belongs_to один Entity.Кроме того, каждый Entity может belong_to родитель Entity.Он должен наследовать все родительские Blobs.Есть ли хороший способ моделирования этого в Rails?Иными словами, есть ли способ сделать что-то вроде этого:

# Beware, wrong code
class Entity < ActiveRecord::Base
  has_many :blobs
  has_many :blobs, :through => :parent, :source => :blobs
end

Или, может быть, другая идея, как это сделать?

1 Ответ

1 голос
/ 05 апреля 2011

Что-то очень похожее на это должно работать:

class Entity
  belongs_to :parent, :class_name => 'Entity', :foreign_key => 'parent_id'
  has_many :children, :class_name => 'Entity', :foreign_key => 'parent_id'
  has_many :direct_blobs, :class_name => 'Blob'
  has_many :inherited_blobs, :class_name => 'Blob', :through => :parent, :source => :direct_blobs

  def blobs
    direct_blobs + inherited_blobs
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...