힐로 모두의 필드에 쓸 수 없습니다레일 가치 :: ObjectId가이 유형의 배열
내가 작업을 실행할 때, 레일 및 mongoid와 BSON 이드에 액세스하려고하지만이 오류가 메시지 :
작업 :
namespace :geocodeschool do
desc "Show premium school near non-premium school and update them"
task :schgc => :environment do
@schools = School.all
def premium_school_aside(school)
radius = 50
@schools_a = School.near(school.coordinates.reverse, radius, units: :km)
@schools_premium = @schools_a.premium_school.limit(3)
end
@schools.each do |school|
premium_school_aside(school)
puts "// -------------- //"
puts "AUTO-ÉCOLE : #{school.title}"
puts "// -------------- //"
puts "les auto-écoles premiums près de #{school.title} : #{@schools_premium.count}"
puts "-------"
@schools_premium.each do |sa|
puts sa.id
school.update(school_premium_asides: sa.id)
end
puts "-------"
end
end
end
0 난 그냥 ID를 입력하기 때문에
Mongoid::Errors::InvalidValue:
message:
Value of type BSON::ObjectId cannot be written to a field of type Array
summary:
Tried to set a value of type BSON::ObjectId to a field of type Array
resolution:
Verify if the value to be set correspond to field definition
내가 왜 이해가 안 돼요, 여기 코드입니다
및 모델의 필드 :
field :school_premium_asides, type: Array
사람이 왜 나를 설명 할 수 있는가, 어떻게이 문제를 해결하려면?
이 답변에 감사드립니다 :와
! 나는 내가하고 싶은 것을 이해하고 있다고 생각하지만, 가장 가까운 3 개의 프리미엄 학교를 배열에 배치하여보기에 표시하고자합니다. 그래서 배열을 만들어서 3 개의 ID로 채우는 것이 더 명확합니다. ? –
가장 가까운 세개의 'school.update (school_premium_asides : those_three_ids_in_an_array)'를 찾아야합니다. 맞습니까? –
하지만 다음과 같은 코드가 있습니다 : '@schools_premium.each do | sa | puts sa.id school.update (school_premium_asides : sa.id) 끝 '작동해야합니까? –