2010-05-27 3 views
0

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

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

Я думал полиморфного стол под названием 'штрих-код'

штрихкоды

  • ID
  • barcode_number
  • barcodable

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

ответ

1

Создание модели 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