:从活动记录中的参数找不到很好的设计?

时间:2010-06-12 11:51:43

标签: ruby-on-rails ruby

我收到了这个错误:

SQLite3::SQLException: no such column: apis.name: SELECT * FROM examples WHERE ("apis"."name" = 'deep') 

我的代码

 Api.find :all, :from => params[:table_name], :conditions => {:name => 'deep' }

我需要制作一个后端导轨应用程序,它将由silverlight应用程序使用。其中一个要求是从数据库中获取简单数据。我需要能够使用相同的代码查询不同的表。(我的应用程序有2000个表!)

我认为rails在WHERE子句中输入“apis”是没有意义的。这有什么特别的原因吗?

1 个答案:

答案 0 :(得分:0)

这样做是这样的,当执行连接时,where子句将与右表的列对齐。这在大多数情况下都很方便,但在您的特定情况下会导致问题。

您可以使用其他条件语法,它不会将rails表名称添加到属性中,但仍会正确清理输入。

Api.find :all, :from => params[:table_name], :conditions => ['name = ?','deep']