我試圖通過他們的ID對所有城市(僅選擇他們的名稱屬性)進行查詢,我希望能夠指定一個ID範圍來選擇。我的代碼如下:Rails - 如何通過ID範圍選擇所有記錄
def list_cities(start, stop)
cities = City.all(order: 'name ASC', id: start..stop, select: 'name')
cities.map { |city| "<li> #{city.name} </li>" }.join.html_safe
end
但是,我得到一個錯誤:
Unknown key: id
我在我看來實現是:
<%= list_cities(1,22) %>
這是可以把所有的輔助方法意見,所以我不把邏輯放在一個特定的控制器。
我對這個模型的架構是:
create_table "cities", :force => true do |t|
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "neighborhoods"
t.string "name"
t.integer "neighborhood_id"
end
當我跑在我的控制檯中的方法,我得到:
City Load (0.9ms) SELECT name FROM "cities" WHERE ("cities"."id" BETWEEN 1 AND 3) ORDER BY name ASC
=> ""
我知道這是不是因爲它有一個空數據庫的問題
def list_cities(start, stop)
cities = City.all(order: 'name ASC', limit: stop - start, select: 'name')
cities.map { |city| "<li> #{city.name} </li>" }.join.html_safe
end
然而,這種方法只返回第一個「N」重:用以下版本的方法的工作線,而不是像我想要的範圍。
當控制檯嘗試一個簡單的查詢:
1.9.3p385 :009 > City.where(:id => 1..4)
City Load (0.9ms) SELECT "cities".* FROM "cities" WHERE ("cities"."id" BETWEEN 1 AND 4)
=> []
我想通了,爲什麼發生?
我也City.all在我的控制檯,並意識到我的城市以身份證號碼「946」開始,因爲我已經多次播種,身份證不是我認爲的那樣!提供的解決方案是正確的!
模式是什麼樣的? – 2013-04-30 03:23:39