içinde sonsuz şamandıralar kullanma SQLite3 kullanan bir Rails uygulamasında, kayan nokta özniteliğine sahip bir modelde Float::INFINITY
ve -Float::INFINITY
kayan değerleri kullanmak istiyorum. INSERT
sorgularını Model.create!
kullanarak çalıştırmak, bu iyi çalışıyor çünkü activerecord bu durumda hazırlanmış ifadeler kullanıyor. Ben foo.save
kullanarak bir kaydı güncelleştirmeye çalıştığınızda Ancak, activerecord hazırlanmış bir stament kullanmaz ve sadeceRuby on Rails
SQLite3::SQLException: no such column: Infinity
sonuçlanan sağ sorguda dize Infinity
koyar bu geçici veya yapmak için bir yolu var mı Model/veritabanında dizeleri kullanmaya başvurmalıyım?
Raylar sürüm 3.2.21
, SQLite3 versiyonu 1.3.10
Düzen. Şimdilik ben veritabanı göç string
için sütun türünü değiştirdi ve sadece iyi Float::INFINITY
saklamak için izin veritabanında YAML tefrika yüzer saklamak için ActiveRecord anlatmak için
serialize :property, Float
kullanın.
Hayır, [IEEE754] (http://en.wikipedia.org/wiki/IEEE_floating_point) veritabanına kaydedeceğiniz değer + ∞ ve −∞ isimli float değerlerini tanımlar. Onu geriye aldınız, '1.0/0' Float :: INFINITY 'olarak tanımlandı. Bir özniteliği '9e999' olarak ayarlamak, değişkenin 'Float :: INFINITY' olarak ayarlanmasını sağlar, dolayısıyla aynı SQLite3 hatasını alırım. – Christoph
Bunun için üzgünüz. Ben şamandıra aşina değilim :) Bu fikir, sonsuzluk için bir yedek olarak çok büyük bir sayı denemek için. Neyse, 'Float :: MAX' kullanmayı denediniz mi? Sadece keşfetti ve bundan daha büyük sayıların yakutta sonsuzluğa eşit olduğunu biliyordu. –