2013-01-25 56 views
0

我使用acts_as_paranoid进行逻辑删除。 删除记录时。该记录不会消失。它只是在'deleted_at'列中获取时间戳,这意味着已删除。如何获取记录避免嵌套的零记录?

在我的模型,

Community has_many :topics

我拿来的所有主题这样

@topics = Topic.page(params[:page]).order("updated_at DESC") 

然而,它得到路由错误时,它的显示主题记录,其父母的社区已被删除。

如何获取其父'Community'存在的所有主题?

回答

1

如果您有类似的社区一个范围

class Community 
    def self.not_deleted 
    where deleted_at: nil 
    end 
end 

那么你可以做

@topics = Topic.joins(:community).merge(Community.not_deleted). 
    page(params[:page]).order("updated_at DESC") 

否则,你可以做

@topics = Topic.joins(:community).where(community: { deleted_at: nil }). 
    page(params[:page]).order("updated_at DESC") 
+0

谢谢!我试过第一个,它返回这个错误:(未定义的方法'not_deleted' – MKK

+0

你将不得不在社区类首先定义not_deleted方法,就像我在例子 – mike

+0

SMart!它的工作!谢谢! – MKK