2013-11-27 33 views
0

我有遺留數據庫
我想用回形針寶石上傳圖像
回形針需要四個參數爲工作
但我有隻有一個字段,即文件名和休息不在數據庫中
所有參數 那麼,怎樣才能用一個參數
下面筆者結合回形針是我在型號代碼回形針與傳統數據庫

class ItemMaster < ActiveRecord::Base 

    set_table_name "MDIMT" 

    attr_accessible :IMTNAME, :IMTBRIEFDESC, :IMTDETAILDESC, :IMTIMAGE, :IMTCALORIE, :IMTIMTEMCODE1, :IMTIMTEMCODE2, 
        :IMTPRICE, :IMTISVARPRICE, :IMTISCUSTOMIZED, :IMTDURATIONMINS, :IMTSEQNUM, :CREATEDBY, :MODIFIEDBY, 
        :CREATEDATE, :MODIFYDATE, :EXTRAFIELD1, :EXTRAFIELD2, :EXTRAFIELD3, :EXTRAFIELD4, :IMTISACTIVE, :IMTTAX1, 
        :IMTTAX2, :IMTTAX3, :IMTTAX4, :IMTCNDITEMTYPE, :IMTCNDFILTEROPT 
    alias_attribute :image_file_name, :IMTIMAGE 
    has_attached_file :image, 
        :path => ":rails_root/public/assets/:basename.:extension", 
        :url => "/assets/images/:basename.:extension" 
end 

回答

0

回形針使用標準的getter和setter方法來存儲或接收數值F從實例。你雲嘗試超載getter和setter,而是將數據存儲在一個序列化的哈希:

class ItemMaster < ActiveRecord::Base 
    set_table_name "MDIMT" 

    attr_accessible :IMTNAME, :IMTBRIEFDESC, :IMTDETAILDESC, :IMTIMAGE, :IMTCALORIE, :IMTIMTEMCODE1, :IMTIMTEMCODE2, 
        :IMTPRICE, :IMTISVARPRICE, :IMTISCUSTOMIZED, :IMTDURATIONMINS, :IMTSEQNUM, :CREATEDBY, :MODIFIEDBY, 
        :CREATEDATE, :MODIFYDATE, :EXTRAFIELD1, :EXTRAFIELD2, :EXTRAFIELD3, :EXTRAFIELD4, :IMTISACTIVE, :IMTTAX1, 
        :IMTTAX2, :IMTTAX3, :IMTTAX4, :IMTCNDITEMTYPE, :IMTCNDFILTEROPT 

    alias_attribute :image_hash, :IMTIMAGE 
    default_value_for :image_hash, {} 
    serialize   :image_hash, Hash 

    has_attached_file :image, 
        :path => ":rails_root/public/assets/:basename.:extension", 
        :url => "/assets/images/:basename.:extension" 

    %w[ image_file_name image_file_size image_content_type image_processing image_updated_at ].each do |field| 

    # Adds getter and setter for all keys in the array and stored the data in the image_hash instead 
    class_eval <<-END_OF_RUBY, __FILE__, __LINE__ + 1 

     def #{field} 
     image_hash['#{field}'] 
     end 

     def #{field}=(value) 
     self.image_hash['#{field}'] = value 
     end 

    END_OF_RUBY 
    end 
end 
+0

但給人錯誤的私有方法'image_hash」呼籲# user3094168

+0

我已經包括default_value_for寶石也 – user3094168

+0

@ Kiran:我從代碼中刪除了'private'方法'image_hash',並添加了聲明'default_value_for:image_hash,{}'。請再試一次。請注意,我沒有測試該代碼,它只是一個概念。但我很確定它接近於工作解決方案。 – spickermann