2009-10-13 68 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

相關問題