Sorgulama yapılırken ActiveRecord, sütun türüne göre aralıkların, dizilerin, vb. Nasıl işleneceğini otomatik olarak kararlaştırır.ActiveRecord içinde sorgulamak için nasıl/yeni bir tür kaydedebilirim?
Şimdi yapmak istediğim, Model.where(bitfield: [1,4,16,32]).count
gibi bir şey çağırarak bir bit değerleri kümesi için bir tamsayı sütunu sorgulamaktır; burada, bu bitlerden en az birine sahip olan tüm nesneleri saymak buna göre bir sorgu oluşturacaktır.
Elde edilen SQL'i nasıl kuracağımı biliyorum, temel olarak sütun türünü kontrol edecek kodumu koyacağım bir yer arıyorum, bitfield
olarak yapılandırıldığımı buldum ve ilgili aracı oluşturmak için işleyicimi kullanıyorum SQL parçaları.
... saklayıcısında farkında olan Modelinizdeki bir
bit_where
yöntemi yapmak için iyi anlamak için emin olacaktır ama ActiveRecord geçersiz kılarak kendi tamsayı türü oluşturabilirsiniz: : Type :: Bitfield modelinde tamsayı yöntemleri. Ardından, modellerde her özellik türünü şu şekilde ayarlayabilirsiniz: 'attribute: int_var, Bitfield.new'. Özel sorgu için bunu nasıl yapacağımı bilmiyorum :). – rdupzAh, bu iyi bir işaretçidir. Belki de sorgulama mantığını tip rotanın herhangi bir yerinde bulabilirim. – CMW