Iレールに3.1フォーラムアプリケーションのトピックおよびポストを作成するためのコードを有する:検証エラーが空である
def create
@topic = Topic.new(:name => params[:topic][:name], :last_post_at => Time.now)
@topic.forum_id = params[:topic][:forum_id]
@topic.user = current_user
if @topic.save
@post = Post.new(:content => params[:post][:content])
@post.topic = @topic
@post.user = current_user
@post.save!
...
対応するフォームを介しcreate
方法への投稿、トピックポストが作成され、両方ともsave
コールが成功しました。
機能テストでcreate
メソッドを呼び出すと、トピックは保存されますが、投稿に検証エラーがあります。
ActiveRecord::RecordInvalid: Validation failed:
app/controllers/topics_controller.rb:23:in `create'
test/functional/topics_controller_test.rb:26:in `block in <class:TopicsControllerTest>'
テストのようになります。私は、デバッガを介して、または@post.errors.full_messages
でポストオブジェクトのエラーを表示する場合
test "should create topic" do
post :create, :topic => {:name => "New topic", :forum_id => forums(:one).id}, :post => {:content => "Post content"}
end
(current_user
は、セットアップ方法を経由してログインしている。)
エラー配列は空です。
Post
モデルは次のようになります。
class Post < ActiveRecord::Base
attr_accessible :content
belongs_to :topic
belongs_to :user
end
そしてTopic
モデル:
class Topic < ActiveRecord::Base
belongs_to :user
belongs_to :last_poster, class_name: 'User'
attr_accessible :name, :last_poster_id, :last_post_at
belongs_to :forum
has_many :posts, :dependent => :destroy
end
どのように検証エラーを引き起こしているものを見つけることができますか?
実際のエラーメッセージを投稿できますか?また、置くことができるポストモデルの検証もありますか? – jstim
あなたのトピックモデルはどのように見えますか? – Kelend
それは完全なポストモデルですか?妥当性検査はまったくありませんか? – Thilo