Làm cách nào để mở rộng ActiveRecord từ ứng dụng / mô-đun?

Tôi có một số phương thức lớp tùy chỉnh act_as _... khác nhau mà tôi muốn sử dụng trong ứng dụng của mình. Tôi muốn mã cho các phương thức đó nằm trong các tệp trong thư mục app / modules.

Tôi không thể làm cho điều này hoạt động.

Ví dụ: tôi có một tệp: app / modules / act_as_lockable

module ActsAsLockable

    def acts_as_lockable
        before_create :set_lock

        include InstanceMethods
    end

    module InstanceMethods
        protected

        def set_lock
            now = Time.now.to_s
            self.lock = Digest::SHA1.hexdigest(now)
        end
    end

end

ActiveRecord::Base.extend ActsAsLockable

Và trong application.rb

config.autoload_paths += %W(#{config.root}/app/modules)

Khi tôi cố gắng tải lên một mô hình có tên gọi act_as_lockable, tôi gặp lỗi sau:

NameError: biến cục bộ không xác định hoặc method `act_as_lockable '

Tôi đoán là tôi không nên tự động tải thư mục mô-đun vì ActiveRecord đã được tải khi tôi mở rộng nó? Có một cách khác để làm điều này? Tôi muốn có thể thay đổi tệp trong quá trình phát triển mà không cần khởi động lại máy chủ của mình nhưng đó là nhu cầu nhiều hơn là cần.

6
задан tanman 9 June 2011 в 05:27
поделиться