2013-11-27 30 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