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

  • AllYourNewsByMe

    AllYourNewsB

    18 Temmuz 2011
  • theKGB65

    theKGB65

    24 Aralık 2007
  • videoisunrelated

    videoisunrel

    5 Mart 2009