मैंने ActiveRecord 2.3.5 (mysql_adapter.rb) के स्रोत स्रोत को देखा।
NATIVE_DATABASE_TYPES = {
:primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY".freeze,
:string => { :name => "varchar", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "int", :limit => 4 },
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "datetime" },
:timestamp => { :name => "datetime" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "blob" },
:boolean => { :name => "tinyint", :limit => 1 }
}
भी ध्यान रखें कि: द्विआधारी नहीं है तुम क्या चाहते, क्योंकि वह एक ब्लॉब स्तंभ बनाता NATIVE_DATABASE_TYPES हैश को देखते हुए यह स्पष्ट है कि यह द्विआधारी (16) डेटा प्रकार का समर्थन नहीं करता बनाता है।
यदि आपके पास झुकाव है, तो मैं BINARY (16) प्रकार का समर्थन करने के लिए ActiveRecord को विस्तारित करने की अनुशंसा करता हूं।
अद्यतन: मैथ्यू हिगिन्स द्वारा निम्नलिखित ब्लॉग पोस्ट को खोजने के बाद कुछ आशाजनक प्रतीत होता है ("मनमाने ढंग से एसक्यूएल स्टेटमेंट माइग्रेशन में निष्पादित किया जा सकता है, लेकिन विकल्प वैकल्पिक प्रकार के कॉलम का समर्थन करने के लिए MySQL एडाप्टर को विस्तारित करना है।"): http://www.strictlyuntyped.com/2008/07/mysql-lovin-part-2-adding-new-column.html
यदि आपको यह काम करने के लिए मिलता है, तो मैं आशा करता हूं कि आप जो साझा करते हैं उसे साझा करें। मैथ्यू की तरह, मैं देखना चाहता हूं कि ActiveRecord में कॉलम प्रकार जोड़ने के लिए क्लीनर एपीआई है। क्योंकि आप डीबी के लिए कच्चे बाइट्स भेज रहे हैं,
class User < ActiveRecord::Base
def uuid=(value)
@uuid = write_attribute(:uuid, value.scan(/../).map {|n| n.to_i(16)}.pack("C*"))
end
def uuid
@uuid ||= read_attribute(:uuid).unpack("C*").map {|n| sprintf("%02x", n)}.join
end
end
बेशक, आप किसी बायनरी स्तंभ चाहते हैं:
क्या नीचे दिए गए उत्तर और टिप्पणियां मदद मिलीं? क्या आपको कुछ ऐसा मिला जो आपके लिए काम करता था? –