Tôi cần liệt kê tất cả các liên kết thuộc về đối tượng trong một đối tượng mô hình và lặp qua chúng. Có cách nào để làm việc này không?Có cách nào để liệt kê tất cả các hiệp hội thuộc về không?
29
A
Trả lời
30
Bạn có thể sử dụng hàm băm reflections
của lớp để thực hiện việc này. Có thể có những cách đơn giản hơn, nhưng hoạt động này:
# say you have a class Thing
class Thing < ActiveRecord::Base
belongs_to :foo
belongs_to :bar
end
# this would return a hash of all `belongs_to` reflections, in this case:
# { :foo => (the Foo Reflection), :bar => (the Bar Reflection) }
reflections = Thing.reflections.select do |association_name, reflection|
reflection.macro == :belongs_to
end
# And you could iterate over it, using the data in the reflection object,
# or just the key.
#
# These should be equivalent:
thing = Thing.first
reflections.keys.map {|association_name| thing.send(association_name) }
reflections.values.map {|reflection| thing.send(reflection.name) }
16
Thing.reflections.collect{|a, b| b.class_name if b.macro==:belongs_to}.compact
#=> ["Foo", "Bar"]
tất nhiên, bạn có thể vượt qua: has_many, hoặc bất kỳ hiệp hội khác quá
34
Bạn có thể sử dụng phương pháp reflect_on_all_associations từ Reflection Đối ví dụ:
Thing.reflect_on_all_associations(:belongs_to)
Các vấn đề liên quan
- 1. Liệt kê tất cả các hội đồng .NET có sẵn
- 2. thuộc về các hiệp hội
- 3. Cách liệt kê tất cả các thuộc tính của lớp
- 4. tìm tất cả số không có trong hiệp hội
- 5. FactoryGirl thuộc về hiệp hội
- 6. Groovy Liệt kê tất cả các thuộc tính cho lớp
- 7. Liệt kê tất cả các chỉ mục
- 8. Liệt kê tất cả virtualenv
- 9. Làm thế nào để liệt kê tất cả các thuộc tính phụ thuộc của kiểm soát?
- 10. Psql liệt kê tất cả các bảng
- 11. Liệt kê tất cả các kho SVN
- 12. liệt kê các hội đồng trong GAC
- 13. Làm thế nào để lập trình liệt kê tất cả các thuộc tính được xác định?
- 14. Liệt kê tất cả thông tin về phiên
- 15. git liệt kê tất cả các lệnh có sẵn
- 16. Cách liệt kê tất cả các ngày giữa hai ngày
- 17. Làm cách nào để liệt kê/liệt kê tất cả các ứng dụng đã cài đặt trong Windows XP?
- 18. Tôi làm cách nào để liệt kê tất cả các tiến trình đang chạy trong Windows?
- 19. NetworkInterface.getNetworkInterfaces() không liệt kê tất cả các giao diện
- 20. Liên hệvề cách liệt kê tất cả các trường có sẵn?
- 21. Liệt kê tất cả các hàm dựng sẵn trong javascript?
- 22. Làm cách nào để liệt kê tất cả các yanks trong các emacs?
- 23. Cách tốt nhất để liệt kê tất cả các codec video có sẵn trên Windows?
- 24. Liệt kê tất cả các ổ đĩa vật lý (Windows)
- 25. windows .bat tập tin cách đệ quy liệt kê tất cả các tệp thuộc loại * .mp3
- 26. Liệt kê tất cả các trang web trong IIS C#
- 27. AppleScript - Liệt kê tất cả các phông chữ
- 28. Chức năng của PHP để liệt kê tất cả các thuộc tính của đối tượng
- 29. Liệt kê tất cả các gói con của gói
- 30. liệt kê tất cả các quy trình trong iOS 5.0.1
shit doped! tốt đẹp....! –