Rails 3 Предоставление и ошибка после сохранения моделей в базе данных MySQL - PullRequest
2 голосов
/ 08 марта 2011

Произошла случайная ошибка при использовании рельсов 3

class Picture < ActiveRecord::Base

end

И когда я пытаюсь

Picture.create :content_type => :test

я получаю

TypeError: can't convert nil into Integer
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `uniq'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `commit_transaction_records'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:165:in `transaction'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:207:in `transaction'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:290:in `with_transaction_returning_status'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:240:in `save'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:251:in `rollback_active_record_state!'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:239:in `save'
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/base.rb:498:in `create'
from (irb):4

И вот как выглядит моя миграциякак

  class CreatePictures < ActiveRecord::Migration
     def self.up
    create_table :pictures do |t|
       t.string :title
       t.string :content_type
       t.string :url
       t.float :lat
       t.float :long
       t.string :hash 
       t.timestamps
    end
   end

   def self.down
     drop_table :pictures
   end
 end

Но данные действительно сохраняются?Любые идеи

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Ваша проблема вызвана использованием зарезервированного слова 'хэш' в вашей модели. Хотя я часто затрудняюсь запомнить это, простое правило - никогда не называть столбцы после каких-либо зарезервированных слов Руби.

Если вы используете хеш MD5 или что-то еще для своих фотографий, вам следует переименовать столбец 'hash' в 'md_hash'.

0 голосов
/ 17 марта 2011

Создается ли поле идентификатора вместе с записью базы данных?Кажется, что поле идентификатора - ваше единственное целое число, и оно может не возвращаться правильно при создании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...