Вопрос дизайна: псевдонимы для модели Location (Rails) - PullRequest
1 голос
/ 07 июля 2011

Это скорее вопрос общего дизайна, но он будет реализован в RoR, для которого я очень новичок.Кроме того, я думаю, что это мой первый вопрос, поэтому, пожалуйста, будьте осторожны:)

Сценарий:

У меня есть модель активов.Каждый актив находится в определенной комнате, поэтому я также хотел бы иметь отношение один ко многим с моделью местоположения.Достаточно просто.Однако, некоторые комнаты (Местоположения) также идут под псевдонимом (например, 123 - Библиотека).Когда пользователь хочет обновить информацию о конкретном активе, я хотел бы, чтобы он мог просто выполнять поиск, не беспокоясь о том, знают ли они точный номер комнаты, и отображать список активов в этой комнате.

Чтобы уточнить, может быть более одного псевдонима.

Так что вопрос:

Вы бы порекомендовали модель псевдонима, для которой местоположение будет иметь одно-Многие отношения?Или, может ли быть лучше самореференциальная (своего рода иерархическая) ассоциация?Или что-то еще может быть?Из того, что я могу предвидеть, для первого потребуется запрос столбцов в разных таблицах для получения информации одного и того же типа, а для второго просто неправильный вывод (псевдоним не совпадает с положением).

1 Ответ

2 голосов
/ 08 июля 2011

Это может быть хорошей областью для использования плагина тегов действует-как-тег-вкл:

https://github.com/mbleigh/acts-as-taggable-on

В вашей модели вы можете сделать:

class Location < ActiveRecord::Base   
  acts_as_taggable_on :aliases 
end

Затем в вашем контроллере выполните:

Location.tagged_with("library", :on => :aliases)
...