account_i-6ren">
gpt4 book ai didi

ruby-on-rails-3 - 使用 STI 时使用 Thinking Sphinx 范围获取 "undefined method"

转载 作者:行者123 更新时间:2023-12-04 16:11:39 27 4
gpt4 key购买 nike

我正在使用带有 Rails 3.2.9 的 Thinking Sphinx 2.0.13。

鉴于我有 STI 类,如下所示:

class User < ActiveRecord::Base
define_index do
has :account_id
has :is_deleted
end

sphinx_scope(:by_account) do |account_id|
{:with => {:account_id => account_id}}
end

sphinx_scope(:without_deleted) do
{:with => {:is_deleted => false}}
end
end


class Admin < User
end

如果我尝试在 User 或 Admin 类上使用单个范围,一切都很好。正如预期的那样,我还可以使用 User 模型将范围链接在一起。问题是,如果我在 Admin 模型上链接范围,我会得到:
> Admin.by_account(1).without_deleted

NoMethodError: Sphinx Query (2.9ms)
Sphinx Found 3 results
Admin Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`type` IN ('Admin') AND `users`.`id` IN (7, 8, 9)
undefined method `without_deleted' for #<ThinkingSphinx::Search:0x007fd3d95f7a08>

一旦遇到第一个范围,它似乎就会运行查询。是否有明显我遗漏的东西,或者这看起来像是 TS 的问题?

最佳答案

以下是您之前遇到的一些问题 sphinx_scopes这可能是这里的问题。

  • 人们在他们的 sphinx_scopes 中发现了名称冲突的问题。 .您的范围 by_account是一个主要的候选者,所以尝试重命名它。我可以想象在派生类而不是基类中搞砸的情况。
  • 过去的范围问题已经通过对调用重新排序来解决,所以尝试 Admin.without_deleted.by_account(1) .不是修复,我知道。
  • 我还预测 account_id是一个主键(即每个 User 最多一个 Account )。如果是这样,这可以解释为什么 Rails选择过早地获取它。
  • 关于ruby-on-rails-3 - 使用 STI 时使用 Thinking Sphinx 范围获取 "undefined method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13358906/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com