Я хотел бы построить модель, в которой класс ServiceRegions имеет отношение многие ко многим с почтовыми индексами. То есть ServiceRegions могут охватывать несколько почтовых индексов, и они могут перекрываться, поэтому один и тот же почтовый индекс может быть связан с несколькими ServiceRegions.
Я надеялся сохранить почтовый индекс непосредственно в таблице отношений, а не создавать класс ZipCode, но я не могу заставить код работать должным образом. Я успешно получил код для создания отношений, но мне не удалось получить доступ к массиву связанных почтовых индексов, как можно было ожидать.
Вот соответствующий код:
class ServiceRegion < ActiveRecord::Base
has_many :z_sr_relationships, :dependent => :destroy,
:foreign_key => :service_region_id
has_many :zips, :through => :z_sr_relationships, :source => :zip
def includes_zip!(zip)
z_sr_relationships.create!( :zip_id => zip, :service_region_id => self.id)
end
end
class ZSrRelationship < ActiveRecord::Base
attr_accessible :service_region_id, :zip
belongs_to :service_region, :class_name => "ServiceRegion"
validates :zip, :presence => true
validates :service_region_id, :presence => true
end
Когда я делаю шоу на экземпляре ServiceRegion и пытаюсь вывести my_service_region.zips, он выдает ошибку, что не может найти почтовые индексы ассоциации.
Предназначено ли Rails для того, чтобы позволить вам сделать много-многую ассоциацию с базовым типом, таким как строка, или с int, который не является определенным классом с собственным файлом модели?