'daki bir tam sayıyı tanımakta başarısız olursa sıfır değer ekleme. Denetleyicimde, tek, eşleşen bir tamsayı değerini koparmam ve sonra başka bir tabloda bu değerle bir kayıt oluşturmam gerekir. eylem, bu şuna benzer: Ben first
değişken tanımlanabilir olması konsolda test ettikRails 4
if Participation.where(ranking: "1")
first = PointsAllocation.where(game_id: params[:game_id]).where(place: "1").pluck(:points)
Stack.create(game_id: params[:game_id], user_id: current_user.id, chips: first)
else
end
.
SELECT "points_allocations"."points" FROM "points_allocations" WHERE "points_allocations"."game_id" = 1 AND "points_allocations"."place" = 1 => [10]
Tamam, doğru şekilde Points
için bir tamsayı değeri neye benzediğini koparma edilir: Ben PointsAllocation.where(game_id: "1").where(place: "1").pluck(:points)
çalıştırırsanız, o dönecektir. Daha sonra bu puan değerini kullanmak ve Stack
tablosundaki Chips
sütununa göndermek istiyorum. Bunu çalıştırdığınızda, bu nedenle gibi first
tanımlanmış olsa bile bir nil
kaydını ekler:
sorunların giderilmesini <Stack id: 1, game_id: 1, user_id: 1, chips: nil>
, belki burada konudur düşünce bir tamsayı benziyor (ve Chips
rağmen , Ekleyelim, t.integer
özniteliğidir), belki de yanlışlıkla bir dize veya pluck bir şey. Bu yüzden, kopmadan sonra map(&:to_i)
ekleyerek bunu güvenli bir tamsayıya eşleyelim.
Ben şimdi döner gibi, tuhaflaşıyor, bunu
: Ben bir tamsayı dönüştürmek zaman<Stack id: 9, game_id: 1, user_id: 1, chips: 0>
Yani, bir 0 10 değiştirir ve tabloya ekler.
Neredeler?
Yep, sadece yakalandı. Bir alternatif: dokümantasyonu okuduktan sonra, "pluck" tek bir değer olsa bile bir dizi döndürür. '.first' kullanarak, bir tamsayıya dönüştürür ve oluşturma yönteminde başarıyla kullanılabilir. Teşekkürler! – darkginger