Я работаю с пространственными данными с помощью postgis.
У меня есть общая таблица poi с данными в качестве имени, адреса, долготы и широты
Я тоже работаю с гемом friendly_id
Я хотел бы получить жилье, питание и города из Poi.
Один Poi имеет одно размещение или одно питание или один город
У меня есть много функций, которыеработает для Poi.
Я хотел бы получить данные для каждого вида по poi.
Я думаю, что должен построить систему с полиморфной ассоциацией has_one ... но я неНе знаю, как лучше это сделать.
Что я хотел бы сделать?
Позвонить в Poi с разными областями (питание, проживание и т. д.) от friendly_id.
Например, я хотел бы позвонить
Poi.accomodation Poi.города Poi.catering
И для каждого из них должен быть специальный рендеринг.
Любая помощь приветствуется ... Я новичок на рельсах ... и мой английский нелучше: (
модель Poi:
class Poi < ApplicationRecord
extend FriendlyId
friendly_id :name_and_zip_code, use: :slugged
has_one :town, as: poitable
has_one :accomodation, as poitable
модель города:
class Town < ApplicationRecord
belongs_to :poitable
end
модель питания:
class Accomodation < ApplicationRecord
belongs_to :poitable
end
но у меня ошибка, У Пои не может быть обоих .....
Редактировать 1
Что я должен делать?
class Poi < ApplicationRecord
extend FriendlyId
friendly_id :name_and_zip_code, use: :slugged
geocoded_by :full_address
has_one :town, as: :poitable
has_one :accomodation, as: :poitable
class Accomodation < ApplicationRecord
belongs_to :poitable, polymorphic: true
class Town < ApplicationRecord
belongs_to :poitable, polymorphic: true
В дБ:Миграция:
class CreatePois < ActiveRecord::Migration[5.1]
def change
create_table :pois do |t|
t.string :name
t.st_point :lonlat, geographic: true
t.st_point :lonlatheight, geographic: true, has_z: true
t.belongs_to :user, index: true
t.references :poitable, polymorphic: true, index: true
end
end
end
дБ: миграция Размещение
class CreateAccomodations < ActiveRecord::Migration[5.1]
def change
create_table :accomodations do |t|
t.string :genre
end
end
end
дБ: миграция города
class CreateTowns < ActiveRecord::Migration[5.1]
def change
create_table :towns do |t|
t.string :department
end
end
end
В эрбе я могу создать Poi, но:
- Poitable_id: nil
- Poitable_type: nil
Но я не могу создать город или жилое помещение ... У меня есть откат: (
Как я могу это исправить?