我正在使用 Rails 3.2,并从 Foursquare 获取场地。我需要检查我返回的任何场地 ID 是否已在我的数据库中注册,然后返回该数组。我尝试以这种方式进行操作,但是对于所有不存在的场所,我得到了 nil (在数组中)。我的代码有什么问题,有没有更好的方法可以做到这一点,这样我就不必进行 20 次查询(每个 FQ 场地的数据库查询一次)。
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