我無法使用工廠女孩創建有效的評論工廠。我的評論模型屬於可評論的並且是多態的。我已經嘗試了一大堆不同的東西,但在那一刻,我的大多數測試中得到這個錯誤:FactoryGirl多態關聯
ActiveRecord::RecordInvalid:
Validation failed: User can't be blank, Outlet can't be blank
我不知道爲什麼它不經過驗證,尤其是因爲我的評論模型驗證USER_ID和outlet_id,而不是用戶和出口中存在
這裏是我廠:
factory :comment do
body "This is a comment"
association :outlet_id, factory: :outlet
association :user_id, factory: :user
#outlet_id factory: :outlet
association :commentable, factory: :outlet
end
class CommentsController < ApplicationController
def new
@comment = Comment.new
end
def create
@outlet = Outlet.find(params[:outlet_id])
@comment = @outlet.comments.build(comment_params)
@comment.user_id = User.find(params[:user_id]).id
if @comment.save
redirect_to(@outlet)
end
end
def edit
@comment = Comment.find(params[:id])
end
def update
@comment = Comment.find(params[:id])
if @comment.update(comment_params)
redirect_to @comment.outlet
end
end
def destroy
@comment = Comment.find(params[:id])
if @comment.destroy
redirect_to @comment.outlet
end
end
private
def comment_params
params.require(:comment).permit(:body, :outlet_id, :user_id)
end
結束
class Comment < ApplicationRecord
belongs_to :commentable, polymorphic: true
validates :body, :user_id, :outlet_id, presence: true
validates :body, length: { in: 1..1000 }
end
如果刪除了驗證會發生什麼'驗證:USER_ID,:outlet_id,存在:TRUE'? – Fredius
測試會通過,但我覺得我應該驗證每個評論都有它所屬的user_id和outlet_id,不是嗎? –
燁,但我不明白你爲什麼不使用模型,而不是IDS – Fredius