сквозные и полиморфные отношения - PullRequest
1 голос
/ 08 июня 2011

Я не знаю, возможно ли это, но здесь идет речь:

FruitBasket
  has_many :apples
  has_many :bananas
  ######## What to put here to access Worm through its pest_holder relationship?
Apple
  has_many :worms, :as => :pest_holder
  belongs_to :fruit_basket
Banana
  has_many :worms, :as => :pest_holder
  belongs_to :fruit_basket
Worm
  belongs_to :pest_holder, :polymorphic => true

Какие отношения мне нужно назвать:

red_delicious = Apple.first
red_delicious.worms.whatever

И хватит ли ему всего Червя через полиморфные отношения Яблока и Банана с Червем?

Это кажется отсталым, но я все равно ценю помощь! Если требуется какое-либо разъяснение, просто спросите.

1 Ответ

1 голос
/ 09 июня 2011

(угадав ответ на свой комментарий выше)

Вы не можете делать то, что хотите, нет помощника Rails, который позволил бы вам присоединиться к Worm из FruitBasket в одной ассоциации. Вы можете иметь apple_worms и banana_worms, но я уверен, что вы уже догадались, и это не то, что вы хотите.

Что вам нужно сделать, это создать свой собственный метод, чтобы получить правильные значения Worm s - что-то вроде этого:

def worms
  Worm.where :id => apple_ids + banana_ids
end
...