2011-09-20 14 views
1

我正面临着这样一个奇怪的问题。请看看在代码无法从Rails中的数据库访问值

today_date = Time.now.strftime('%Y-%m-%d') 

patient_id = session[:patient_id] 

query = QueryContainedModel.find(:first, :conditions => ["query_type = ?", 'appointment_reminder']) 

这上面的查询产生QUERY_VALUE下面的表单即QUERY_VALUE

query_value = "SELECT PATIENT.NAME AS 'first_name' FROM PATIENT, REMINDER WHERE PATIENT.ID = '#{session[:patient_id]}' 
AND REMINDER.PATIENT_ID = '#{session[:patient_id]}' AND REMINDER.DATE >= '#{today_date}'" 

不过,我不能在下面的代码

@value = ModelName.find_by_sql "#{query_value}" 
@value.each do |value| 
    puts value. 
end 
+1

你永远不应该插值那些进入查询,你打开注入攻击!什么是“QueryContainedModel”和“ModelName”? –

回答

1

假设query = QueryContainedModel.find(:first, :conditions => ["query_type = ?", 'appointment_reminder'])获取值工作,为什么你在下一个代码切换到SQL?你可以轻松地继续建立query本身 - 我假设你的query在这种情况下工作。

0

你问题是你正在尝试访问模型内​​部的会话值,但会话对模型不可见,但只对视图,助手和控制器可见。

尝试通过patient_id作为参数

例如,在你的控制器

query = QueryContainedModel.find(:first, :conditions => ["query_type = ? and patient_id = ?", 'appointment_reminder', session[:patient_id]] 
+0

这也是一个好点;我在上面的代码中修正了一个错误。 –