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