Вставка данных в Rails - PullRequest
3 голосов
/ 25 января 2011

Я новичок в рельсах и не могу понять, как вставить данные в базу данных.

Я читаю CSV и хотел бы загрузить эти значения в БД. Моя модель выглядит примерно так.

class Book < ActiveRecord::Base
  belongs_to :subject
end

class Subject < ActiveRecord::Base
  has_many :books
end

... и мои данные примерно такие:

Science, Book A
Science, Book B
History, Book C
Math, Book D

Я разделяю строки CSV по разделителю.

Как можно вставить данные таким образом, чтобы, если тема существует, запись дочерней книги будет добавлена ​​к существующей теме, но в случае, если тема не существует, будет также создана новая тема?

Это лучший способ сделать это или кто-то может порекомендовать лучший подход.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Не нужно изобретать велосипед.Добавьте строку заголовка в ваш CSV-файл, сохраните его как subjects.csv, а затем используйте встроенную библиотеку приборов для загрузки данных: http://api.rubyonrails.org/classes/Fixtures.html

0 голосов
/ 25 января 2011

Спасибо @idlefingers за это:

subject = Subject.find_or_create_by_name("Science")

subject.books.create(:name => "Book A")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...