Tôi đang cố gắng để thiết lập một số biến lớp học để lưu trữ đường dẫn trong một ứng dụng Rails (nhưng tôi nghĩ rằng đây là một câu hỏi hơn ruby)Cách thích hợp để truy cập các biến lớp trong Ruby 1.9 là gì?
Về cơ bản lớp học của tôi trông như thế này
class Image < ActiveRecord::Base
@@path_to_folder = "app/assets"
@@images_folder = "upimages"
@@path_to_images = File.join(@@path_to_folder, @@images_folder)
end
Nhưng khi tôi cố gắng truy cập @@path_to_images
từ bộ điều khiển của tôi bằng cách làm Image.path_to_images
, tôi nhận được một NoMethodError
Khi tôi cố gắng với Image.class_eval(@@path_to_images)
, tôi nhận được uninitialized class variable @@path_to_images in ImagesController
Tôi đã tìm kiếm xung quanh và tất cả những gì đã nhìn thấy nói những người sẽ làm việc, vì vậy tôi rất bối rối về vấn đề này
Hơn thế nữa, tôi đã cố gắng xác định các lớp học đơn giản với giao diện điều khiển ruby như vậy
class Bidule
@@foo = "foo"
Bar = "bar"
end
Và vì vậy tôi đã thử, tôi nghĩ, tất cả các cách có thể (bao gồm 2 trước đó) để truy cập chúng nhưng không có cách nào tôi luôn có ngoại lệ được nêu ra
tại sao không phải là hằng số lớp? bạn cần accessors ('cattr_accessor') để truy cập các biến lớp từ bên ngoài. http://apidock.com/rails/Class/cattr_accessor – tokland