0

我目前正在将 Rails 应用程序从 2.x 升级到 3.1。

想知道是否有人可以帮助重构它以删除 proxy_option 代码(在 rails 3 中不再可用):

scope = Product.scoped({})
scope = scope.scoped( Product.allowed(options[:current_user]).proxy_options )
scope = scope.scoped( Product.for_country(options[:country_ids]).proxy_options ) if options[:country_ids]

范围方法之一的示例包括:

  def allowed(user)
    where(:id => user.access_to(self.name))
  end
4

1 回答 1

0

这可能是一个可能的解决方案:`proxy_options` 现在是否有替代方案,因为它已被删除?导轨

似乎代码正在构建一个 SQL 查询,而不是替换方法,您可能必须通过弄清楚每行试图做什么并使用 Rails 3 范围或 Arel 来获得相同的结果来替换概念。

也许从 Rails 2.x 复制输出 SQL 并将其放入测试中,并确保您的 Rails 3 代码生成具有相同参数的相同 SQL 查询。

于 2013-01-23T01:51:57.780 回答