2015-12-06 2 views
0

Я использую Ruby 2.1.5 и Rails 4.2.1 Я пытаюсь поместить некоторые статические записи базы данных в таблицу sqlite3 через seeds.rb. Когда я запускаю rake db: seed, я получаю правильное количество строк, вставленных с соответствующими столбцами timestamp, но фактический столбец данных, имя, не заполняется. Имя печатается внутри цикла.Rails rake db: seed Вставляет нули вместо значений

дб/seed.rb

for g in ['Harmony', 'Melody', 'Technique', 'Soloing'] 
    Group.create(name: g) 
    put(g) 
end 

приложение/модели/group.rb:

class Group < ActiveRecord::Base 
    attr_accessor :name 
    has_many :group2exercise 
    has_many :exercises, through :group2exercise 
end 

sqlite3 (копирование создать из SQLdb в Lazarus Browser)

CREATE TABLE "groups"("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
+0

Возможно, вы думаете о 'attribute_accessible'? Это не рекомендуется в Rails 4. – roob

ответ

1

Он должен работать если вы удалите линию

attr_accessor :name 

Имея attr_accessor, создается новый набор методов получения и сеттера, в данном случае переопределяющих то, что предоставил Rails.

+0

Я нашел работу, но я вернусь и попробую предлагаемые решения. Я * думаю * проблема была в операторах has_many. Я вернулся и установил модели, используя «rails g scaffold groups name: string», «rails g scaffold group2exercise group: integer exercise: integer», и я не редактировал модель. –

+0

Что-то не так с вашими заявлениями «rails g». Если вы подозреваете, что причина has_many, удалите его и повторите попытку. – roob

+0

Конечно, я удалил плохой проект, не подумав, как только у меня возникла проблема с оригиналом. Работая назад от моего работающего проекта, я считаю, что вы правы. Как attr_accessor, так и has_many через инструкции заставляют его сломаться. Другой has_many в порядке, хотя он может и не быть полным. –

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