Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

रेल ActiveRecord एक आईडी कॉलम को संभालता है जो प्राथमिक कुंजी नहीं है

नवीनतम रेल (v4.2) में @cschroed द्वारा उत्तर मेरे लिए काम नहीं किया। रेल स्रोत कोड में खुदाई करने पर, ऐसा प्रतीत होता है कि read_attribute यदि पास की गई कुंजी 'id' के बराबर है, तो प्राथमिक कुंजी मान का भी उपयोग करेगा:

  ID = 'id'.freeze

  # Returns the value of the attribute identified by <tt>attr_name</tt> after
  # it has been typecast (for example, "2004-12-12" in a date column is cast
  # to a date object, like Date.new(2004, 12, 12)).
  def read_attribute(attr_name, &block)
    name = attr_name.to_s
    name = self.class.primary_key if name == ID
    _read_attribute(name, &block)
  end

https://github .com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/attribute_methods/read.rb

चूंकि, [] विधि read_attribute . का उपयोग करती है , यह अब काम नहीं करता।

मैंने पाया कि विशेषताओं से सीधे पढ़ने के बजाय हैश ने काम किया:

# LegacyModel class
def other_id
  @attributes.fetch_value('id')
end

इसने read_attribute . को दरकिनार करने का एक माध्यम प्रदान किया _read_attribute . की नकल करके ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql का उपयोग करके वास्तविक समय में गतिशील डेटा को द्वि-दिशात्मक रूप से सिंक्रनाइज़ करने का सबसे अच्छा तरीका कौन सा है

  2. SQL_NO_CACHE का उपयोग कब करें

  3. MySQL में SUM () के साथ अद्यतन करें

  4. रिमोट मशीन पर डेटा लोड करें

  5. Django - OperationalError:(2006, 'MySQL सर्वर चला गया है')