Rails:可以使用回退来实现重复的多态关联吗?

时间:2014-12-10 00:52:19

标签: ruby-on-rails polymorphic-associations

有没有办法定义从另一个poly assoc中提取的多态关联,但是如果第一个多关联是空的,那么它还会恢复为备份poly关联?也许是这样的?

class Reservation < ActiveRecord::Base
    has_many :trip_itinerary_entries, :through => :trips, :source => :itinerary_entries
    has_many :template_itinerary_entries, :through => :templates, :source => :itinerary_entries
    has_many :entries, :from => :trip_itinerary_entries, :backup => :template_itinerary_entries

谢谢!

1 个答案:

答案 0 :(得分:0)

我会设置两个多态关联(在我的模型中和我的数据库中的必需列),然后创建一个获取两个项的方法(你不想覆盖它们的方法,否则你不会能够写出新的关系。)

def get_entries
  if entries.any?
    entries
  else
    template_itinerary_entries
  end
end

这样,您可以在需要添加项目时使用entries

reserve = Reservation.new
reserve.entries << Entry.create()

但您可以使用get_entries方法获取其中任何一项。

reserve.get_entries
=> [template_itinerary_entries] # if there are no entries.