0

rake db:migrate:reset を実行した後に発生したいくつかの新しいエラーを修正しようとしています。これを除いて、すべて修正しました。カスタム受信トレイで、[新しいメッセージを送信] をクリックすると、次のエラーが表示されます。

Mysql2::エラー: 列 'sender_id' を null にすることはできません: INSERT INTO messages( body, container, created_at, read_at, recepient_deleted, recepient_id, sender_deleted, sender_id) VALUES ('test 1' subject, updated_at'draft', '2013-04-05 18:59:08', NULL、0、16、0、NULL、「テスト 1」、「2013-04-05 18:59:08」)

次に、いくつかの背景情報を示します。リセットを行う前に、移行を変更しました。それで、それが機能し始めているのでしょうか?

元の移行:

class CreateMessages < ActiveRecord::Migration
    def up
        create_table :messages do |t|
            t.string :sender_id,:null => false
            t.string :recepient_id
            t.boolean :sender_deleted, :recepient_deleted, :default => false
            t.string :subject,:null => false
            t.text :body
            t.datetime :read_at
            t.string :container,:default => "draft"
            t.timestamps
        end
    end

    def down
        drop_table :messages
    end
end

文字列から整数に変更できるように移行を変更しました。

class ChangeSenderIdAndRecepientIdColumns < ActiveRecord::Migration
  def change
    change_column :messages, :sender_id, :integer
    change_column :messages, :recepient_id, :integer
  end

  def down
     change_column :messages, :sender_id, :string
     change_column :messages, :recepient_id, :string
  end
end

メッセージ コントローラー:

  def create
    @message = Message.new(params[:message])
    @message.sender_id = @user_id
    if @message.save
      flash[:notice] = "Message has been sent"
      redirect_to user_messages_path(current_user, :mailbox=>:inbox)
    else
      render :action => :new
    end
  end
4

0 に答える 0