2010-08-13 19 views
8

Có cách nào để có đường ray tăng lỗi nếu cố gắng thực hiện các thuộc tính gán khối lượng không được attr_accessible cho phép? Điều này sẽ có ích trong việc phát triển để nhắc tôi lý do tại sao mô hình mới sáng bóng của tôi không hoạt động, và cũng tốt để đăng nhập vào sản xuất để phát hiện hoạt động độc hại.Đường ray và attr_accessible: là có một cách để nâng cao một ngoại lệ nếu một thuộc tính không gán khối lượng được giao hàng loạt?

Tôi đang sử dụng đường ray 2.3.8 nhưng có thể sẽ sớm được chuyển sang 3.

Trả lời

6

Do Rails 3.2, điều này không còn đòi hỏi phải có monkeypatching - đường ray cung cấp hành vi này ngay bây giờ. Đặt điều này trong development.rbtest.rb:

config.active_record.mass_assignment_sanitizer = :strict 
0

Tôi không chắc chắn nếu điều này sẽ làm việc, nhưng bạn có thể viết một bài kiểm tra để xem nếu đối tượng của bạn "respond_to (: unexpected_attr) ". Sau đó, bạn có thể cố ép nguồn cấp dữ liệu đó attr

Alex

2

Tôi sẽ đề xuất something like the Bento project has incorporated into their Rails app.

Chúng tạo bộ khởi tạo Rails trong config/initializers/và sau đó ghi đè phương thức thích hợp trong lớp ActiveModel để tăng MassAssignmentError (trong môi trường không sản xuất).

+0

monkeypatching không còn cần thiết, yay! 'config.active_record.mass_assignment_sanitizer =: strict' –

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