2012-06-12 40 views
25
Post 
    :belongs_to :user 

User 
    :has_many :posts 

Trong quy trình đăng ký của tôi, họ soạn thảo Bài đăng trước, sau đó nhập trang tiếp theo, nhập Thông tin người dùng của họ để đăng ký.Nhận thông báo lỗi xác thực mà không lưu

# intermediate step, validate that Post is valid before moving on to User creation 
# posts_controller: 

@post = Post.new(params[:post]) 
if @post.valid? 
    # go on to create User 
else 
    render 'new' 
end 

NHƯNG! @post thông báo lỗi không được tạo vì tôi không lưu mô hình @post Tôi chỉ đang kiểm tra .valid?. Làm cách nào để tạo thông báo lỗi mà không lưu?

Trả lời

44

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn muốn nhận các lỗi mà không lưu mô hình?

Đó chính xác là những gì đang diễn ra. @post.valid?

sẽ trả về true hoặc false tùy thuộc vào việc có bất kỳ lỗi nào không. Nếu có lỗi. chúng sẽ được thêm vào số băm @post.errors.

Trong tình huống mà bạn muốn lưu chỉ cần gọi @post.save Nó sẽ trả về true nếu lưu thành công hay sai nếu lỗi có mặt trong khi Populating @post.errors trong quá trình

+0

Bạn là chính xác. Tôi đã không hiển thị @ post.errors đúng cách. Cảm ơn! – brittohalloran

5

Theo documentation, khi bạn đã gọi #valid? hoặc #invalid? trên hồ sơ, #errors được điền.

Các vấn đề liên quan