2012-04-21 33 views
9

Tôi đang sử dụng ruby ​​và activerecord để nhận thông tin về bảng mysql.Tôi có thể lấy thông tin về bảng, cột và loại từ mô hình không?

Tôi đã hy vọng tôi có thể nhận được thông tin này trực tiếp từ lớp mô hình của tôi, điều này có khả thi không?

Nói rằng tôi có mô hình của tôi:

class Product < ActiveRecord::Base 
end 

là nó bây giờ có thể cho tôi để có được thông tin liên quan đến:

1. mysql table 
2. columns 
3. column types 

Hoặc tôi phải tìm ở đâu đó sâu hơn vào các mô-đun ActiveRecord để có được điều này ?

Trả lời

20
  1. Product.table_name
  2. Product.column_names
  3. Product.columns_hash['title'].type
+0

Nếu bạn sử dụng số 3. với 'id' 'Product.columns_hash [" id "]. Type' cung cấp cho bạn': integer' Có cách nào để biến đổi thành một số nguyên '?? – mariowise

+0

'Product.columns_hash [" id "]. Type.to_s.classify.constantize' –

2

Có một cái nhìn tại ActiveRecord::ModelSchema::ClassMethods:

class Product < ActiveRecord::Base 
    self.table_name # 1 
    self.columns # 2 
    self.columns_hash['name'].type # 3 
end 
+0

Bạn có chắc chắn về người cuối cùng? Tài liệu nói rằng 'cột' là một mảng, không phải là một băm. – jdoe

+0

Xin lỗi, bạn nói đúng - tôi đã sửa nó. – DanS

Các vấn đề liên quan