无法从Rails中的数据库访问值

时间:2011-09-20 11:35:23

标签: ruby-on-rails ruby database

我正面临着这样一个奇怪的问题。请查看代码

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

2 个答案:

答案 0 :(得分:1)

假设query = QueryContainedModel.find(:first, :conditions => ["query_type = ?", 'appointment_reminder'])有效,为什么要在下一段代码中切换到SQL?您可以轻松地继续构建query本身 - 我假设您的query在这种情况下有效。

答案 1 :(得分:0)

问题是您正在尝试访问模型中的会话值,但会话对模型不可见,但仅对视图,帮助程序和控制器可见。

尝试将patient_id作为参数传递

例如,在您的控制器中

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