Có một số phép thuật Ruby/Rails ẩn nào đó chỉ đơn giản gọi một phương thức nếu nó tồn tại?Chỉ gọi phương thức nếu nó tồn tại
phép nói rằng tôi muốn gọi
resource.phone_number
nhưng tôi không biết trước nếu nguồn lực đáp ứng phone_number
. Một cách để thực hiện việc này là
resource.phone_number if resource.respond_to? :phone_number
Đó không phải là tất cả những gì đẹp nếu được sử dụng sai địa điểm. Tôi tò mò nếu một cái gì đó tồn tại mà làm việc nhiều hơn dọc theo dòng cách try
được sử dụng (resource.try(:phone_number)
).
Như một ví dụ cực đoan, tôi khuyên bạn nên ghi đè 'method_missing' của' Object' để trả về 'nil' trong trường hợp này. Đây là kinh dị để gỡ lỗi. Và một số người sẽ xem xét phong cách xấu, meta và không cần thiết. – User
@Người dùng bah, không phải là một nỗi buồn. Bạn chỉ đơn giản là để rewing một ngăn xếp trở lại nơi nil ngoại lệ đã được ném :-) – mudasobwa
bằng cách sử dụng 'respond_to' là lựa chọn tốt nhất – apneadiving