【发布时间】:2017-06-21 15:13:43
【问题描述】:
我正在开发维护应用程序。基本上我的代码中有一个方法,它被多种方法调用。该方法基本形成如下所示的sql查询。
def filter_data
data = Student.all
data = data.where(:id => params[:id]) if params[:id]
data = data.where(:roll_no => params[:roll_no]) if params[:roll_no]
return data
end
我在我的应用程序的很多地方都使用了这种方法,如下所示
def get_user_data
data = filter_data
data.pluck("sum(marks)")
end
现在的问题是我想在filter_data 方法中向“students”表添加内部连接。现在,由于“marks”列在两个表中,我必须在“get_user_data”方法中添加别名,如下所示。
data.pluck("sum(students.marks)")
添加别名不是问题,但我必须在使用"filter_data" 方法的整个应用程序中添加别名。这是一个非常耗时的过程,我想避免它。当sql查询中不存在别名时,有什么方法可以告诉活动记录使用“xxx”作为别名。
如果有人对此问题有任何解决方案,请告诉我。
【问题讨论】:
-
所以你总是只想要学生
marks? -
不。它只是一个例子。在实际场景中,我的应用程序中有很多地方我使用了两个表中存在的许多列名。(有时列是两个。有时是一个,有时是10)
标签: ruby-on-rails rails-activerecord ruby-on-rails-4.2