2010-10-26 31 views

Trả lời

48

Nếu bạn có một thể hiện của mô hình của bạn sau đó user.attributes là một Hash của các thuộc tính của mô hình và giá trị của họ như vậy, ví dụ, bạn có thể làm một cái gì đó như:

user.attributes.each_pair do |name, value| 
    puts "#{name} = #{value}" 
end 

Nếu bạn không có một cụ thể Ví dụ sau đó lớp có các phương thức trả về thông tin về các trường trong cơ sở dữ liệu ví dụ User.columnsUser.content_columns. ví dụ.

User.columns.each do |column| 
    puts column.name 
end 
+2

Điều này không còn được dùng làm đường ray 4, giải pháp đúng là gì bây giờ? –

+1

Phương pháp nào được đề cập không được chấp nhận? Tất cả họ dường như vẫn còn trong tài liệu API. – mikej

+2

Điều đó có hiệu quả đối với tôi trên Rails 4.2.2. Cảm ơn mikej. –

1
Article.columns.each do |column| 
    puts column.name 
end 

này lặp trên tất cả các đối tượng cột cho mô hình Điều.

1

@ model.methods trả về tên của tất cả các phương pháp của đối tượng.

@ model.methods.grep (/ = $ /) sẽ trả về tên của tất cả các phương pháp ghi, vì vậy bạn có thể đoán rằng nếu bạn có người đặt cược thì bạn cũng có người đọc, vì vậy đây có thể là " bất động sản". Bạn cũng có thể kiểm tra băm thuộc tính (@ model.attributes) là một Hash với tất cả các cột được định nghĩa trong cơ sở dữ liệu, và đây có thể là cách đáng tin cậy nhất, vì phương thức "phương thức" có thể không bao gồm thuộc tính độc giả (và nhà văn) được tạo động. (Nó có thể phụ thuộc vào phiên bản RubyOnRails bạn đang sử dụng).

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