2012-10-24 118 views
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" 

我想找到名稱爲「....考試」和更多的實例。

我試着用

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

,但它發現在DB 「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」

我怎麼能w請問這個問題?

回答

2

你在那裏做什麼?你爲什麼不使用Rails ActiveRecord?

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

這個或類似的東西(我必須承認不要100%明白你想做什麼)應該做的伎倆。

如果你不能這樣做,也許你應該考慮改變你的數據庫和名稱字段只有名稱和移動這些數字和p1_c1_東西在不同的領域。

+0

感謝您的建議,我修改了一點您的查詢,我得到了預期的結果。 Field.order(:name).where(「id_participant =#{@ idOfParticipant} AND id_survey =#{@ idOfSurvey} AND name LIKE'#{nameStep}%'」)。last ['name'] –