2010-08-09 85 views
0

這是我在Ruby中的數據庫on Rails的結構:如何在RoR中執行此搜索?

  • 用戶有許多注意事項
  • 筆記有很多種類
  • 種類有很多注意事項

筆記和類別之間的關係是has_many :through,我有一個名爲NoteCategory的模型和一個note_categories表。

筆記模型有一個日期字段,它代表創建筆記的日期。

我得到的筆記與此行用戶:

current_user.notes 

我怎麼能提供一個日期,並取回的類別在該日期創建的所有用戶的注意事項?謝謝閱讀。

編輯:忘了提及,我還需要通過它們所附註的created_at字段進行排序。

編輯2:這裏是實際的協會

user.rb

has_many :notes 

note.rb

belongs_to :user 
has_many :note_categories 
has_many :categories, :through => :note_categories 

category.rb

has_many :note_categories 
has_many :notes, :through => :note_categories 

回答

2

鑑於你有

class User 
    has_many :notes 
    has_many :categories, :through => :notes 
end 

class Note 
    has_many :categories # <-- source reflection 
end 

然後使用這個取景器:

user.categories.all(:order => 'notes.created_at') 

user.categories.find :all, :order => 'notes.created_at' 
+0

謝謝您的回答,我會嘗試一下。一個簡單的問題是,我想要排序的字段實際上是notes.created_at,即類別是根據創建日期創建的,並根據它們所附加的筆記進行排序。這是你的代碼嗎? – ben 2010-08-10 01:06:05

+1

修正後,我瞭解你錯了... – hurikhan77 2010-08-10 07:20:47

+0

我得到了以下錯誤: 無效的源反射宏:has_many:通過has_many:類別,:通過=>:筆記。使用:source來指定源反射。 – ben 2010-08-10 09:58:09