つまり、ディスカッションの内容とタイトルの両方を検証しているので、作成時にユーザーIDをディスカッションにマージしているからだと思います。
ディスカッションモデル
class Discussion < ActiveRecord::Base
attr_accessible :user_id, :content, :title
has_many :discussion_comments, :dependent => :destroy
belongs_to :user
validate :content, :presence => true,
:length => {:minimum => 10, :maximum => 254}
validate :title, :presence => true,
:length => {:minimum => 10, :maximum => 254}
end
ディスカッションコントローラー
def create
@discussion = Discussion.create(params[:discussion].merge(:user_id => current_user.id))
if @discussion.save
redirect_to tasks_path, :flash => {:success => 'Created a new discussion'}
else
redirect_to tasks_path, :flash => {:error => 'Cannot create empty discussions.'}
end
end
とにかく、空のフォームを保存しようとするたびに、エラーメッセージが表示されるはずのときに成功メッセージが表示されます。
ディスカッションフォーム
<%= form_for @discussion do |f| %>
<p><%= f.label :title %>
<%= f.text_field :title %></p>
<p><%= f.label :content %>
<%= f.text_area :content %></p>
<p><%= f.submit %></p>
<% end %>
述べたように、作成時にユーザーIDをマージしているという事実と関係があると思いますが、検証によって作成プロセス全体が停止する必要があります。