请帮我解决这个Rails / ruby​​方法吗?

时间:2010-01-26 11:06:34

标签: sql mysql ruby-on-rails

我有一个带有act-as-taggable-on gem的帖子模型。两个表都有时间戳。

我从

开始
def tags
  @posts = current_user.posts.find_tagged_with(params[:tag], :order => "@posts.tags.updated_at DESC"])
end

当这不起作用的时候,我试着改变一切,结果就是这个烂摊子。

def tags
  @posts = current_user.posts.find_tagged_with(params[:tag])
  @tags = @posts.tags.all
  @posts = @tags(params[:tag, :order => "@posts.tags.updated_at DESC"])
end

我基本上想要在上次更新标签时进行排序。

奖励:按tag.updated_at或post.updated_at排序,但在这个特定的应用中,我会更新标签,所以只需要第一个就可以了。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您必须加入tags声明中的find表:

def tags
  @posts = Post.find_tagged_with(
    params[:tag], 
    :conditions => {:user_id => current_user.id}, 
    :joins => :tags, 
    :order => 'tags.updated_at DESC',
    :group => 'posts.id'
  )
end

注意:找到正确的条件以仅选择当前用户的帖子。不过,这个例子可行。