2014-04-24 60 views
0

在我的控制器的索引操作:如何構造返回用戶帖子和帖子類別的查詢?

@posts = current_user.posts.process_and_return_posts 

在模型:

class Post < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :category 

    def self.process_and_return_posts 
    # doing some cleanup 
    # return posts 
    end 
end 

在視圖中我將顯示按類別的職位,我不知道我應該怎麼構建查詢和什麼類型集合我想要的職位?

我需要收集包含兩個類別的對象和郵政對象(如視圖遍歷他們時,我會爲了他們)。

回答

1

重要的是要注意,current_user.posts實際上返回填充Post對象的Array對象,而不是後對象。

所以,你應該猴補丁可枚舉模塊,而不是郵政類process_and_return_posts方法。

你可以猴子補丁on Rails的方法很多,但我最喜歡的方式是把所有的猴子修補代碼在一個地方,讓我知道什麼是被猴子之前修補。

在Rails目錄,裏面config/initializers,創建一個名爲extensions目錄。這是你可以把你所有的猴子補丁代碼。裏面config/initializers/extensions,創建一個名爲Ruby的文件,enumerables.rb讓你後來才知道,這個代碼包含的代碼可枚舉。

config/initializers/extensions/enumerables.rb

module Enumerable 
    def process_and_return_posts 
    # your code here. 
    end 
end 

一定要重新啓動服務器的軌道,只要您在initializers任何更新。

2

我想你想要的是

group_by { |post| post.category } 

這樣你就可以在你的視圖中使用

Post.process_and_return_posts.keys.each do |category| 
    category.posts ... 
end 

這應該結合你的協會還努力

current_user.posts.process_and_return_posts.keys.each do |category| 
    category.posts ... 
end