2010-07-30 32 views

Trả lời

3

Xem this ticket đề xuất bản vá cho đường ray. Bạn có thể thêm đoạn mã sau vào một tập tin mới /config/initializers/hidden_columns.rb:

require "activerecord" 

class << ActiveRecord::Base 
    def hidden_columns(*hidden) 
    write_inheritable_array("hidden_column", hidden.collect(&:to_s)) 
    end 

    def columns_hidden 
    read_inheritable_attribute("hidden_column") || [] 
    end 

    def columns 
    unless defined?(@columns) && @columns 
     @columns = connection.columns(table_name, "#{name} Columns").delete_if {|c| columns_hidden.member?(c.name) } 
     @columns.each {|column| column.primary = column.name == primary_key} 
    end 
    @columns 
    end 
end 

Sau đó, bạn có thể viết:

hidden_columns :rowguid 

trong các mô hình có liên quan.

+0

Cảm ơn, nhưng điều này không hiệu quả. Bằng cách nào đó, RoR không tìm thấy phương thức hidden_columns. Tôi đang getti một phương pháp không xác định. – Hibri

+0

Nó sẽ hoạt động ngay bây giờ. – giraff

0

trả lời là tương tự như trên

Phương pháp cần phải được định nghĩa là một phương pháp học http://gist.github.com/504745

+0

Tuyệt vời là bạn đã tự khắc phục. "Trên" thay đổi mặc dù, vì vậy tôi sửa đổi câu trả lời của tôi. – giraff

1

Một lựa chọn khác, sẽ làm cho một cái nhìn mà giấu đi những cột (s). Tôi đã làm điều này khi bolting một ứng dụng đường ray lên một DB kế thừa trong SQL Server. Bằng cách này bạn không cần phải gây rối với/chống lại đường ray và có thể ẩn bất kỳ cột nào bạn muốn một cách dễ dàng ...

+0

một cách dễ dàng nhất và đơn giản nhất để đi theo ý kiến ​​của tôi. tôi ước gì tôi đã thấy trong những năm trước đây khi tham gia vào một dự án di sản – FireDragon

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