从acts_as_taggable find_tagged_with获取标记对象子集的最有效方法?
问题描述:
例如,我的图像模型中有一个命名范围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
答
我不熟悉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描述了如何做到这一点,如果它尚未被合并到源中。
谢谢,没有意识到命名范围和发现是可链接的。 – mculp 2009-10-13 14:44:59