我有一个带有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排序,但在这个特定的应用中,我会更新标签,所以只需要第一个就可以了。
感谢任何帮助。
答案 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
注意:找到正确的条件以仅选择当前用户的帖子。不过,这个例子可行。