我在这个网站上找到了很多帖子,其他人给了我一些我需要的东西,但是我还没把它们拼凑起来。
对于搜索我使用思维sphinx gem在我的网站上运行sphinx。每次用户向网站添加新帖子时,我都需要重新编制索引。我已经在我的网站上运行delayed_job所以我想要做的是每次添加新帖子时,我想使用delayed_job异步重新索引。我想我需要使用handle_asynchronously命令并在我的模型中调用一个方法来运行rake任务来重新索引..但是我读到的某个地方说rake不应该从代码运行。
底线,完全糊涂了。有人可以建议如何解决这个问题吗?
我可以完全离开,但这就是我在想的......
# in post.rb
def reindex_database
# run rake task
end
# in posts_controller.rb
def add_post
# add_post logic
handle_asynchronously Post.reindex_database
end
答案 0 :(得分:1)
如果有人关注此事,我最后通过在post.rb方法中添加系统调用来解决此问题:
# in post.rb
def reindexDB
`rake thinking_sphinx:rebuild`
end
..然后每当我需要调用它时,我都会使用它:
Post.delay.reindexDB
知道如何正确地解决这个问题仍然会很好。
答案 1 :(得分:1)