Tôi có một số mã trong plugin kiểu động cơ bao gồm một số kiểu máy. Trong ứng dụng của tôi, tôi muốn mở rộng một trong các mô hình này. Tôi đã quản lý để thêm cả hai ví dụ và phương thức lớp cho mô hình trong câu hỏi bằng cách bao gồm một mô-đun từ bên trong một initializer.Mở rộng mô hình trong plugin bằng "has_many" bằng mô-đun
Tuy nhiên tôi dường như không thể thêm liên kết, gọi lại, v.v. Tôi gặp lỗi 'phương pháp không tìm thấy'.
/libs/qwerty/core.rb
module Qwerty
module Core
module Extensions
module User
# Instance Methods Go Here
# Class Methods
module ClassMethods
has_many :hits, :uniq => true # no method found
before_validation_on_create :generate_code # no method found
def something # works!
"something"
end
end
def self.included(base)
base.extend(ClassMethods)
end
end
end
end
end
/initializers/qwerty.rb
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
Gotcha: Khi thực hiện 'tải lại!' trong giao diện điều khiển, lớp được tải lại nhưng vì mô-đun (trong trường hợp của tôi) được gọi từ trình khởi tạo, mô-đun không được áp dụng lại. – Kris
Hơn nữa tại thời điểm nó xuất hiện mã trong mô-đun chỉ được bao gồm khi sử dụng bàn điều khiển, khi cùng một mã được gọi là từ một bộ điều khiển nó không thành công. Tôi muốn đăng một ví dụ mã nhưng một câu trả lời có vẻ không đúng (đây không phải là một diễn đàn sau khi tất cả) ... – Kris
ĐIỀU KHIỂN: render: text => User.new.respond_to? ('Hits') và return # => false CONSOLE: User.new.respond_to? ('hits') # => true PREEMPT: Tôi đã khởi động lại máy chủ :) – Kris