Tôi đang sử dụng Ruby on Rails 3.2.2 và tôi muốn biết nếu sau đây là một "đúng"/"đúng"/"chắc chắn" cách để ghi đè lên một phương pháp setter cho một thuộc tính lớp học của tôi.Cách đúng để ghi đè phương thức setter trong Ruby on Rails là gì?
attr_accessible :attribute_name
def attribute_name=(value)
... # Some custom operation.
self[:attribute_name] = value
end
Mã trên dường như hoạt động như mong đợi. Tuy nhiên, Tôi muốn biết nếu, bằng cách sử dụng mã trên, trong tương lai tôi sẽ có vấn đề hoặc, ít nhất, những vấn đề "tôi nên mong đợi"/"có thể xảy ra" với Ruby on Rails. Nếu đó không phải là cách đúng để ghi đè lên một phương thức setter, đúng cách là gì?
Note: Nếu tôi sử dụng mã
attr_accessible :attribute_name
def attribute_name=(value)
... # Some custom operation.
self.attribute_name = value
end
tôi nhận được lỗi sau:
SystemStackError (stack level too deep):
actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70
Tôi thích thuật ngữ áp dụng "đúng đắn"/"đúng"/"chắc chắn". Khi bạn cho nó 3 cách nó thực sự đảm bảo không có sự hiểu sai. Làm tốt lắm! – Jay
@Jay - "Ý nghĩa tinh vi"; -) – Backo
Chỉ cần được rõ ràng, "mức độ ngăn xếp quá sâu" là đề cập đến thực tế là một cuộc gọi đệ quy của nó ... gọi của chính nó. – Nippysaurus