Rails 3.2を使用しており、Foursquareから会場を取得しています。返される会場IDのいずれかがデータベースに登録されているかどうかを確認してから、その配列を返す必要があります。私はこの方法でそれを行おうとしますが、それは機能しますが、存在しないすべての会場で(配列内で)nilになります。私のコードの何が問題になっていますか。これを行うためのより良い方法があるので、20回のクエリを実行する必要はありません(FQ会場ごとにデータベースに対して1回のクエリ)。
def index
client = Foursquare::Base.new(CLIENT_KEY, SECRET_KEY)
@venues = client.venues.search(:ll => "-33.8670522, 151.1957362")
output = @venues["nearby"].collect do |venue|
account = Account.find_by_fq_venue (venue.id) if account.present?
end
render :json => output, :status => :success
end
アップデート
私はそれを次のように解決することになりました:
client = Foursquare::Base.new(CLIENT_KEY, SECRET_KEY)
venues = client.venues.search(:ll => "-33.8670522, 151.1957362")
ids = venues["nearby"].collect { |venue| venue.id }
@output = Account.find_all_by_fq_venue (ids)
render :json => @output, :status => :success