Tôi đang làm việc trên một ứng dụng ruby trên đường ray. Đối với một bộ điều khiển phiên, tôi muốn sử dụng một trường hợp để kiểm tra xem tài khoản của người dùng bị khóa hoặc bị cấm. Tôi đang cố gắng sử dụng đối tượng của một lớp như trường hợp, và sử dụng khi nào để kiểm tra các thuộc tính.Ruby on Rails Case/Switch. Làm thế nào để phù hợp với đối tượng?
Ví dụ,
user = Profile.find(1)
case user
when user.ban
redirect_to()
when user.lock
redirect_to()
else
redirect_to()
end
Vấn đề duy nhất là không hoạt động.
gì công việc là thế này:
case user.ban
when true
redirect_to()
else
redirect_to()
end
Bất kỳ lời khuyên về cách tôi có thể đi về kiểm tra nếu một đối tượng người sử dụng bị cấm hoặc bị khóa bằng cách sử dụng công tắc?
Cảm ơn bạn
Cảm ơn bạn cho tất cả các câu trả lời. Tôi thấy câu trả lời của Zepplock hữu ích nhất cho ứng dụng của tôi. Sự khác biệt duy nhất là tôi đã sử dụng các biểu tượng trong phương thức và trường hợp. Dưới đây là phương pháp tôi đã viết: tình trạng def nếu self.ban trở lại: ban cuối nếu self.lock trở lại: khóa cuối cuối – Brian
@ Brian: Chỉ cần để làm nổi lên vết đỏ một chút - nếu một hàm trả về một boolean, nó là hình thức tốt để đặt tên nó với một dấu chấm hỏi. Ngoài ra, mặc dù post-modifiers có thể bị lạm dụng và làm tổn thương mức độ dễ đọc, trong trường hợp này tôi nghĩ rằng họ làm việc để cải thiện nó: 'def status; return: bị cấm nếu bị cấm ?; return: bị khóa nếu bị khóa? end' – Amadan