2011-06-15 32 views
0

我正在升级Rails 2.3.5应用程序到Rails 3.我没有实现该应用程序,我只是升级它。我发现开发人员使用查询哈希的方式很难在不触及许多我想避免的文件的情况下进行更改。移植条件散列在新rails中使用3活动记录查询界面

class A 
    def method_1 
     AnObject.find(:all, :conditions => {:param_1 => @param_1}.merge(specific_params)) 
    end 

    def specific_params 
     raise NoMethodError, "Subclasses must implement this method", "specific_params" 
    end 
end 

class B < A 
    def specific_params 
     {param_B1 => false, param_B2 => true} 
    end 
end 

有很多类,从继承A.我需要在A类的查询转换到Rails 3可能有人请建议最好的办法,以港口这个到Rails 3,而不改变其继承的类一个工具specific_params方法。

谢谢。

回答

0
AnObject.find(:all, :conditions => {:param_1 => @param_1}.merge(specific_params)) 

将在Rails的3

工作,或者你可以将其更改为:

AnObject.where({:param_1 => @param_1}.merge(specific_params)) 
+0

我需要将其转换为AnObject.where(...)形式 – Zeeshan 2011-06-15 10:12:14

+0

为什么呢?我不明白你想要做什么。 – Ant 2011-06-15 11:04:39

+0

根据[link]()简而言之,传递选项hash包含:conditions,:include,:joins,:limit,:offset,:order,:select,:readonly,:group,:having,:from,:lock到任何ActiveRecord提供的类方法,现在都被弃用了。 – Zeeshan 2011-06-15 11:07:50