2017-05-31 54 views
0

我已經開始編寫一個測試:Rails:爲什麼我的裝置具有相同的ID?

class PostPresenterTest < ActionView::TestCase 
    let(:presenter) { PostPresenter.new(post, view) } 
    let(:post) { Post.first } 

    it 'should something something...' do 
    byebug 
    end 
end 

我有post.yml夾具文件:

one: 
    title: Title One 
    content: First content. 

    two: 
    title: Title Two 
    content: Second content. 

當我放到byebug,我注意到Post.count == 2但個別職位有相同的ID:

Post.first.id == 298486374 
    Post.last.id == 298486374 

這是預期嗎?我需要確保每個帖子都有自己的唯一ID。什麼是添加ID到固定裝置的軌道標準?我應該手動添加ID嗎?還是應該採取特定步驟來確保帖子具有不同的ID?

+1

根據[文檔](http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html),省略ID應導致自動生成ID。 – max

回答

1

問題是,我認爲Post.firstPost.last返回不同的職位。他們實際上返回了相同的帖子。 ID爲的是的不同。

(byebug) Post.all 
#<ActiveRecord::Relation [#<Post id: 298486374, title: "Title Two", content: "Second content.", created_at: "2017-06-01 06:44:50", updated_at: "2017-06-01 06:44:50">, #<Post id: 980190962, title: "Title One", content: "First content.", created_at: "2017-06-01 06:44:50", updated_at: "2017-06-01 06:44:50">]> 

我試圖Post.order("created_at").firstPost.order("created_at").first但是那些過於返回同一職位。我意識到這是因爲這兩個帖子都有相同的創建日期。手動添加日期解決了這個問題。 #last#first現在會返回不同的帖子。

相關問題