0

我有表字段:

t.string   "name"
t.integer  "id_survey"
t.integer  "id_participant"

我在数据库中有以下实例:

Field1= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_exams1"]
Field2= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_exams2"]
Field3= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_examination1"]
Field4= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_examination2"]

我有一个变量:

nameStep = "p1_c1_exams"

我想找到名称为“....exams”和更大数字的实例。

我试过了

lastField = Field.find{|f| f['id_participant']==1 and f['id_survey']==1 and f['name'].include? nameStep}['name']

但它在数据库“p1_c1_exams1”而不是“p1_c1_exams2”中找到第一个实例

然后我尝试了:

lastField = Field.last{|f| f['id_participant']==1 and f['id_survey']==1 and f['name'].include? nameStep}['name']

但它在数据库“p1_c1_examination2”而不是“p1_c1_exams2”中找到最后一个实例

我该如何编写查询?

4

1 回答 1

2

你在那里做什么?为什么不使用 Rails ActiveRecord?

Field.order(:id_participant, :id_survey, :name).where("name LIKE 'p1_c1_exams%'").last

这个或类似的东西(我必须承认不是 100% 理解你想做什么)应该可以解决问题。

如果您不能这样做,也许您应该考虑更改您的数据库并使用仅包含名称的名称字段并将这些数字和 p1_c1_ 内容移动到不同的字段中。

于 2012-10-24T11:49:06.210 回答