5

trước hết, tôi đang sử dụng đường ray 3.1.3 và carrierwave từ nhánh chính của chi tiết github repo g2.carrierwave: gắn kết trình tải lên trên thuộc tính động được tuần tự hóa

tôi sử dụng một cái móc after_init để xác định lĩnh vực dựa trên một thuộc tính của trang mô hình ví dụ và xác định accessors thuộc tính cho các lĩnh vực mà lưu trữ các giá trị trong một hash serialized (hy vọng đó là rõ ràng những gì tôi nói về). đây là một phiên bản rút gọn của những gì tôi đang làm:

class Page < ActiveRecord::Base 
    serialize :fields, Hash 

    after_initialize :set_accessors 

    def set_accessors 
    case self.template 
     when 'standard' 
     class << self 
      define_method 'image' do 
       self.fields['image'] 
      end 
      define_method 'image=' do |value| 
       self.fields['image'] = value 
      end 
      end 
      mount_uploader :image, PageImageUploader 
     end 
    end 
    end 
end 

rời ra lệnh mount_uploader mang lại cho tôi truy cập vào các thuộc tính như tôi muốn. nhưng khi tôi gắn kết người tải lên một nhận được một thông báo lỗi nói 'phương pháp xác định mới cho lớp nil'

tôi đọc trong nguồn rằng có những phương pháp read_uploader và write_uploader trong module mở rộng. làm thế nào để tôi phải ghi đè lên những điều này để làm cho lệnh mount_uploader hoạt động với thuộc tính 'ảo' của tôi.

tôi hy vọng ai đó có ý tưởng về cách tôi có thể giải quyết vấn đề này. cảm ơn rất nhiều để được trợ giúp của bạn.

quan trọng nhất. dominik.

+0

Đây là câu hỏi được bản địa hóa khá tốt, vì vậy bạn có thể có may mắn hơn khi yêu cầu nhóm CarrierWave: http://groups.google.com/group/carrierwave – iwasrobbed

+0

cảm ơn bạn đã trả lời nhưng tôi đã thử. không có câu trả lời đáng buồn. đó là lý do tôi đến đây. – domtra

Trả lời

6

Vấn đề tương tự nhưng được giải quyết trong mô hình của bạn, bạn nên ghi đè các phương pháp thể hiện read_uploader(column)write_uploader(column, identifier). Tôi cũng có một vấn đề với #{column}_will_change!#{column}_changed? cho một cột ảo vì vậy tôi đã xác định họ quá:

class A < ActiveRecord::Base 
    serialize :meta, Hash 

    mount_uploader :image, ImageUploader 

    def image_will_change! 
    meta_will_change! 
    @image_changed = true 
    end 

    def image_changed? 
    @image_changed 
    end 

    def write_uploader(column, identifier) 
    self.meta[column.to_s] = identifier 
    end 

    def read_uploader(column) 
    self.meta[column.to_s] 
    end 
end