2013-04-29 2 views
0

У меня есть проект Rails. Я разбираю файл .xls с помощью roo и помещаю информацию в реляционную базу данных. Как я могу вернуть эту связь, если ruby ​​не использует внешние ключи? Предположим, что у меня есть таблица Category и Subcategory, я читаю строку в файле .xls и записываю информацию в базу данных. Категория имеет много подкатегорий. Но может существовать существующая категория (поэтому мне не нужно добавлять ее снова). Как использовать консоль rails? Я использую что-то вроде a = Category.new(name_category: "test"). Это должно создать категорию, но она не связана с подкатегорией. Как добавить и связать их вместе в одной команде? Что делать, если подкатегория имеет элемент. Как мне создать что-то, связанное с тремя отношениями?Создание объектов с отношениями в консоли Rails

+0

Это действительно зависит от ваших .xls файлов. Содержит ли они subcategory_id или что-то похожее на привязку объекта к другому? – MrYoshiji

+0

да, имейте это в виду. @MrYoshiji – andrefurquin

+0

Мне нужна команда, которая будет работать так. Даже это не работает. Category.create (name: "test"). Subcategory.create (name: "foo"). Я знаю, что это не сработает. Создайте отношения в коде, чтобы рельсы знали, что они связаны. Может быть, я не уверен. – andrefurquin

ответ

0

Не делайте этого в одной команде. Сначала вам нужно «найти или создать» категорию.

category = Category.find_or_create_by_name(name: "test") 
Subcategory.create(name: "foo", category: category) 

Ваши модели должны выглядеть следующим образом:

class Category < ActiveRecord::Base 
    has_many :subcategories 
end 

class Subcategory < ActiveRecord::Base 
    belongs_to :category 
end 
+0

Спасибо. Думаю, я могу сделать это сейчас! – andrefurquin

+0

Я получаю эту ошибку: ActiveModel :: MassAssignmentSecurity :: Ошибка: не могу назначить защищенные атрибуты: категория. – andrefurquin

+0

Ahh, вам также нужна эта линия в вашей модели подкатегории: 'attr_accessible: подкатегория' – ndbroadbent

Смежные вопросы