2013-01-22 51 views
0

我目前正在將rails應用程序從2.x升級到3.1。重構模型以刪除rails3的proxy_options升級

知道如果任何人可以幫助重構這個刪除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] 

的範圍的方法之一的實施例包括:

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

回答

0

這可能是一個可能的解決方案:Is there an alternative for `proxy_options` now that it's been removed? rails

似乎代碼是建立一個SQL查詢,而不是取代你可能會的方法通過確定每一行試圖做什麼並使用Rails 3範圍或Arel獲取相同結果來替換概念。

也許從Rails 2.x複製輸出SQL將其放入測試中,並確保您的Rails 3代碼使用相同的參數生成相同的SQL查詢。