Я работаю над проектом, в котором модель данных:
- реализовано в отдельном геме
- не использует ни ActiveRecord, ни хранилище реляционных баз данных (на самом деле он полагается на couchdb)
- использует пространства имен
- интенсивно использует наследование классов
Чтобы упростить схему, допустим, у нас есть следующий корневой класс:
module Marketplace
module Food
class Fruit
…
end
end
end
И пара специализированных классов:
module Marketplace
module Food
class Peach < Marketplace::Food::Fruit
…
end
class Tomato < Marketplace::Food::Fruit
…
end
end
конец
Я бы хотел, чтобы Rails отображал (и управлял) всеми фруктами, независимо от их природы, без изменения модели, которая отлично работает из Rails.
Проблема в том, что ActionView, похоже, использует определенное количество соглашений для определения путей и URL-адресов, которые будут основаны на реальных именах классов.
Так что, если я представлю Apple, в таблице с действиями show / delete, rails будет искать методы с именем marketplace_food_apple_path и аналогичные, которые, конечно, не существуют.
Есть ли способ указать структуре ActionView :: Base, что Apple - это фрукт?
Я бы ожидал, что это базовое приведение будет тривиальным для фреймворка на основе Ruby, но кажется, что этот простой пример объектно-ориентированной модели не работает с Rails?
Как вы управляете моделями данных «сложных объектов» в рельсах?
Или это просто выходит за рамки Rails?
Спасибо за любые указатели!