Tôi đang sử dụng permanent_records đá quý trong đường ray của tôi 3.0.10 ứng dụng, để ngăn chặn xóa cứng và có vẻ như đường ray được bỏ qua phạm vi mặc định của tôi trong việc kiểm tra tính độc đáoRails 3 Validate độc đáo bỏ qua phạm vi mặc định trên mô hình
# user.rb
class User < AR::Base
default_scope where(:deleted_at => nil)
validates_uniqueness_of :email # done by devise
end
trong bảng điều khiển đường ray cố gắng tìm người dùng bằng email đã bị xóa kết quả bằng không, nhưng khi đăng ký tài khoản mới với địa chỉ email đã bị xóa sẽ dẫn đến lỗi xác thực trên trường email.
Đây cũng là trường hợp đối với một mô hình trong ứng dụng của tôi
# group.rb
class Group < AR::Base
default_scope where(:deleted_at => nil)
validates_uniqueness_of :class_name
end
và đó là trường hợp tương tự như trước đây, xóa một nhóm sau đó cố gắng để tìm thấy nó bằng quả tên lớp trong con số không, tuy nhiên khi tôi cố gắng để tạo một nhóm có tên lớp đã xóa, nó không thành công.
Có ai biết nếu tôi đang làm điều gì sai hay tôi chỉ nên viết trình xác thực tùy chỉnh cho hành vi này?
tốt, đừng quên rằng "validates_uniqueness_of" không còn được dùng trong đường ray 3. sử dụng "validates: email,: uniqueness => {: scope =>: deleted_at}" để thay thế. – sandrew
không phải nó vẫn gọi cùng trình xác nhận hợp lệ ...? – Jimmy
Tôi sẽ đánh dấu điều này là đúng vì nó sẽ hoàn toàn ổn, đêm qua thay vì nghĩ những điều qua tôi đã viết trình xác nhận tính độc đáo của riêng tôi đang hoạt động tốt – Jimmy