2013-10-28 68 views
0

在一個典型的博客應用程序的使用情況:Rails的,如果我這樣做。從()

p = Post.order('created_at DESC').limit(10) 
p.from(5) 

它提出:

ActiveRecord::StatementInvalid: SQLite3::SQLException: near "5": syntax error: SELECT "posts".* FROM 5 ORDER BY created_at DESC LIMIT 10 

我試圖讓在第一個五年的帖子數組和另一個數組中的下五個數組。如果我在數組上使用.from(),它工作的很好,我從我選擇的數字中得到我想要的元素。但是,如果我在視圖或控制器中使用.from(),它將嘗試生成新的查詢,而不是在對象/數組上應用.from()。

我的控制器是這樣做的:

@last_ten_posts = Post.order('created_at DESC').limit(10) 

和視圖:

@last_ten_posts.first(5).each do |post| 
@last_ten_posts.from(5).each do |post| 

我應該如何使用。從()方法?

感謝

編輯:@Rubyist給我記得我處理與職位的第一種方式,我在找到爲什麼。從()不工作有意思嗎?

回答

2

的從方法不起作用,因爲它用來指定表中的記錄將是牽強,所以在您的原始查詢,您是從表5,這是沒有意義的,因爲你找的職位沒有表5,你有一個表稱爲帖子不是5

更多信息,從方法 - http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-from

您可能需要使用不同的方法等進行偏移 - http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-offset

first_five = Post.order('created_at DESC').limit(5) 
last_five = Post.offset(5).order('created_at DESC').limit(5) 
+0

謝謝,偏移量()似乎是一種很好的方式,我現在正在測試它! api中的from()方法也可用於在數組中進行選擇。女傭差異如何? http://api.rubyonrails.org/classes/Array.html#method-i-from –

+0

抵消工作正常,謝謝! –

1
@last_ten_posts = Post.order('created_at DESC').limit(10) 
first_five = @last_ten_posts.first(5) 
last_five = @last_ten_posts.last(5) 
+0

嗨,謝謝你的迴應。我已經嘗試過,我不知道爲什麼我想使用from()方法。我會再檢查一次。 –

+0

是的,它的工作,我記得我爲什麼避免這種方式:如果我有不到10個職位,我會在兩個陣列中顯示相同的職位。我必須寫一些東西來檢查帖子是否不在第5個。這就是爲什麼我使用.from()。 (我有一個if語句,如:post.count> 5做posts.from(5).limit(5))。任何想法.from()方法? –

相關問題