2009-10-13 32 views
1

例如,我的图像模型中有一个命名范围sfw_only,它返回nsfw == false的图像。从acts_as_taggable find_tagged_with获取标记对象子集的最有效方法?

我也在使用acts_as_taggable_on_steroids - 我试图想到最有效的方式来做下面的事情。

if !params[:tag].nil? 
    if nsfw_mode 
    @images = Image.find_tagged_with(params[:tag]) 
    else 
    @images = Image.find_tagged_with(params[:tag]) 
    ... remove images with nsfw == true 
    end 
else 
    if nsfw_mode 
    @images = Image.all 
    else 
    @images = Image.sfw_only 
end 

回答

1

我不熟悉acts_as_taggable_on_steroids。但是文档让我相信它与命名范围兼容。

所以,你应该能够做到

if !params[:tag].nil? 
    if nsfw_mode 
    @images = Image.find_tagged_with(params[:tag]) 
    else 
    @images = Image.find_tagged_with(params[:tag]).sfw_only 
    ... remove images with nsfw == true 
    end 
else 
    if nsfw_mode 
    @images = Image.all 
    else 
    @images = Image.sfw_only 
end 

在它没有,你可以让你自己named_scope模仿finds_tagged_with和你sfw_only作用域链它的情况。 This post描述了如何做到这一点,如果它尚未被合并到源中。

+0

谢谢,没有意识到命名范围和发现是可链接的。 – mculp 2009-10-13 14:44:59

相关问题