Rails查询限制

时间:2011-11-14 19:14:54

标签: ruby-on-rails activerecord model

我查询了这样的图片

pictures = Picture.near([latitude, longitude], 6.8).where("created_at >= :time",{:time => time })

我拿出与此模型相关的标签(每张图片has_many :tags),如此

@tags = Tag.find(:all, :conditions => ["picture_id in (?)",pictures.collect(&:id)])

我使用查询来提取每个标记的属性

@tags.map(&:tagcontent)

我需要做的是限制出来的标签的结果。所以我换了

@tags = Tag.find(:all, :conditions => ["picture_id in (?)",pictures.collect(&:id)])

用这个

numoftags = 6
tags = Tag.limit(numoftags).find(:all, :conditions => ["picture_id in (?)",pictures.collect(&:id)])

但这只产生4个标签,当我知道至少有6个标签可以拔出时。我应该如何修改这个功能。

1 个答案:

答案 0 :(得分:1)

在Rails 3.X中你可以做这样的事情(使用Arel)

numoftags = 6
@tags = Tag.where(["picture_id in (?)",pictures.collect(&:id)]).limit(nooftags)