Rails - один идентификатор для нескольких моделей - PullRequest
0 голосов
/ 28 мая 2010

Я создаю приложение, которое позволит пользователю сканировать штрих-код на «полке», «коробке» или «продукте», чтобы затем вызвать этот конкретный элемент или все связанные элементы.

Поскольку это все отдельные модели с собственными идентификаторами, мне нужна глобальная таблица идентификаторов.

Я думал о полиморфной таблице под названием «штрих-коды»

штрихкоды

  • id
  • номер штрих-кода
  • barcodable

Есть ли простой способ сделать это? Или полиморфный лучший способ?

1 Ответ

1 голос
/ 28 мая 2010

Создайте модель Barcode (которая в конечном итоге будет иметь поле number или code):

class Barcode < ActiveRecord::Base
end

Тогда каждая модель со штрих-кодом будет иметь поле в таблице с именем barcode_id:

class Shelf < ActiveRecord::Base
  belongs_to :barcode
end

class Box < ActiveRecord::Base
  belongs_to :barcode
end

class Product < ActiveRecord::Base
  belongs_to :barcode
end

И у вас будет доступ к этому штрих-коду, например:

@shelf.barcode
...