Хорошо, поэтому я начинаю нормализацию своей базы данных. В настоящее время у меня есть одна модель "Продукты", в которую через канал данных (XML) входит около 60 000 продуктов, в которой содержится продукт с названием категории и названием продавца. Я хочу разделить их на 3 модели; товары, категории и продавцы.
Каждый товар имеет одну категорию и одного продавца, поэтому естественной идеей является создание этих моделей:
category_id | category_name
merchant_id | MERCHANT_NAME
Я могу разработать код для связи между моделями, то есть has_one, own_to и т. Д., Но я изо всех сил стараюсь автоматически связать новый продукт с категорией и продавцом в программном режиме.
Я видел примеры в книгах, где вы начинаете с пустой базы данных, и это кажется довольно простым. Однако я начинаю с полной базы данных и списка названий категорий.
Вот мое заявление о создании продукта, которое отлично работает:
Product.create(:name => node.xpath("./text/name/text()").inner_text.downcase,
:description => node.xpath("./text/desc/text()").inner_text,
:brand => node.xpath("./brand/text()").inner_text,
:merchant => node.xpath("../@name").inner_text,
:category => node.xpath("./cat/text()").inner_text.downcase,
:price => "£" + node.xpath("./price/btext()").inner_text)
Должен ли я сделать что-то подобное, см. Строку категории: (я знаю, что следующее неправильно, кстати!) ...
Product.create(:name => node.xpath("./text/name/text()").inner_text.downcase,
:description => node.xpath("./text/desc/text()").inner_text,
:brand => node.xpath("./brand/text()").inner_text,
:merchant => node.xpath("../@name").inner_text,
:category => << Category.find_by_name(node.xpath("./cat/text()").inner_text.downcase),
:price => "£" + node.xpath("./price/btext()").inner_text)
Есть идеи? Имеет ли это смысл?