0

現在、Rails アプリを 2.x から 3.1 にアップグレードしています。

誰かがこれをリファクタリングして proxy_option コードを削除するのを手伝ってくれるかどうか疑問に思っています (レール 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]

スコープ メソッドの 1 つの例は次のとおりです。

  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 に答える