SORU
19 Aralık 2010, Pazar


Nasıl dinamik rayları bağlama ile ham bir güncelleme yapmak için sql

Bir güncelleştirme aşağıdaki gibi ham sql yürütmek istiyorum:

update table set f1=? where f2=? and f3=?

Bu SQL ActiveRecord::Base.connection.execute, ama bu yönteme dinamik parametre değerleri geçirmek için nasıl bilmiyorum ile yürütülür.

Biri bana yardım edebilir mi?

CEVAP
19 Aralık 2010, Pazar


API yöntemleri bu jenerik yapmak için ortaya Raylar gibi görünmüyor. Temel bağlantı, erişim ve yöntemler, örneğin MySQL için kullanmayı deneyin.

st = ActiveRecord::Base.connection.raw_connection.prepare("update table set f1=? where f2=? and f3=?")
st.execute(f1, f2, f3)
st.close

Eğer bunu yapmak için başka sonuçları (bağlantıları açık bırakmış, vs.) olmadığından emin değilim. Kenara gerçek sorgudan ne yaptığını görmek için normal bir güncelleme için Raylar kodları takip ediyorum.

Hazırlanan sorgular kurtarır seni küçük bir miktar zaman veritabanı, ama sürece yapıyorsun bu bir milyon kez bir satır, muhtemelen daha iyi sadece bina güncelleme ile normal Ruby değiştirme, örneğin

ActiveRecord::Base.connection.execute("update table set f1=#{ActiveRecord::Base.sanitize(f1)}")

ya da ziyaretçi gibi ActiveRecord kullanarak söyledi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • Tube Time

    Tube Time

    14 Mayıs 2013