2012-04-09 43 views
17

Điều này có vẻ như một vấn đề ngớ ngẩn nhưng tôi không thể tìm thấy câu trả lời ở bất cứ đâu!Có thể bỏ qua các xác thực trên update_attributes không?

Có thể update_attributes() và bỏ qua các xác thực, chẳng hạn như trong save(validate: false)?

Tôi có biểu mẫu dài với một số trường có độ dài text (không phải string) và tôi muốn cung cấp cho người dùng khả năng lưu tiến trình của họ trên biểu mẫu. Thông thường, tôi muốn tối thiểu chiều dài, vv, trên các câu trả lời trước khi họ có thể gửi nó và tiếp tục, nhưng trong trường hợp họ chỉ cần nhấp vào "Lưu", tôi muốn đặt bất kỳ tiến bộ nào họ đã thực hiện trong cơ sở dữ liệu để họ có thể quay lại và kết thúc sau. Có cách nào để bỏ qua các xác nhận hợp lệ trong trường hợp này không?

Từ nhìn xung quanh, có vẻ như điều duy nhất tôi có thể làm là liệt kê từng lĩnh vực riêng biệt như vậy:

@obj.field1 = ... 
@obj.field2 = ... 
@obj.field3 = ... 
... 
@obj.save(:validate => false) 

Đó là thực sự là trường hợp? Tôi sẽ lo lắng về việc thêm một lĩnh vực khác tại một số điểm trong tương lai và quên cập nhật bộ điều khiển ở đây.

+0

Cũng xem [câu hỏi này] (http://stackoverflow.com/questions/2998780/how-to-update-attributes-without-validation) nếu bạn chỉ cập nhật một thuộc tính. –

Trả lời

28
@obj.attributes = params[:obj] 
@obj.save(false) 

Cập nhật cho Rails 3

@obj.attributes = params[:obj] 
@obj.save(:validate => false) 
+0

Ah, điều đó đã làm được! Cảm ơn, rất đơn giản. –

+25

nó phải là @ obj.save (validate: false) – thekindofme

+2

Điều này có thể được thực hiện chỉ với một xác nhận nhất định @thekindofme không? –

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