0

我正在尝试修复在执行 rake db:migrate:reset 后发生的一些新错误。我已经修复了所有这些,除了这个。对于我的自定义收件箱,单击发送新消息后,我收到此错误:

Mysql2::Error: 列 'sender_id' 不能为空:INSERT INTO messages( body, container, created_at, read_at, recepient_deleted, recepient_id, sender_deleted, sender_id, subject, updated_at) VALUES ('test 1', '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