0
我希望有人能夠幫助我,現在想弄明白一個星期了,我發現了很多例子,但是因爲我是新來的鐵軌,我想我一直在做一個錯誤的地方,我只是無法找到一個正確的解決方案,我的情況。 所以我有:has_many,通過:relationship count
class Blog < ActiveRecord::Base
attr_accessible :name, :subject_id, :created_at
has_many :blogs_messages
has_many :messages, through: :blogs_messages
end
class Message < ActiveRecord::Base
attr_accessible :title, :body, :created_at
has_many :blogs_messages
has_many :blogs, through: :blogs_messages
end
class BlogsMessages < ActiveRecord::Base
attr_accessible :message_id, :blog_id
belongs_to :blog
belongs_to :message
end
消息生活在不同的博客(比如粉色博客,綠色博客,栗色博客等)和博客生活在主題(深顏色,顏色鮮豔等) 主題有很多博客,但博客只能屬於一個主題。
BlogsMessages被消息和博客 之間的連接什麼即時試圖做的是,以顯示: 頂部3博客(通過它們的消息的量)一個主體內
所以例如當我想選擇主題深色它會告訴我:
1.Maroon Blog: 46 messages
2.Grey Blog: 13 messages
3.Purple Blog: 12 messages
(有總共8個博客中除深顏色。)
可能有人請幫助我,或者至少指向我正確的方向如何使這一切工作?
更新:
我Blogs_controller現在我有:
@blogs = Blog.joins(:blogs_messages => :message).select('blogs.*, COUNT(messages.id) AS message_count').group('blog_id').order('COUNT(messages.id) DESC').limit(3)
在我的博客查看:
<% @blogs.each do |blog| %>
<li><%= blog.name %>: messages</li>
<% end %>
謝謝你,我想你的建議。我現在在blogs_controller中用@blogs = Blog.includes(:messages_blogs =>:message).... limit(3),正如你所說的<%@ blogs.each do .....%> in the查看博客,這是我得到的錯誤:BlogMysql2 ::錯誤:'訂單子句'中的未知列'message_count':SELECT DISTINCT'blogs'.id FROM'blogs' LEFT OUTER JOIN'messages_blogs' ON'messages_blogs'.' blog_id' ='blogs'.'id' LEFT OUTER JOIN'messages' ON'messages'.'id' ='messages_blogs'.'message_id' GROUP BY blog.id ORDER BY message_count DESC LIMIT 3 – Rimma
哇,這很奇怪,你確定你在查詢中使用'select'子句和COUNT(messages.id)AS message_count'? – MrYoshiji
是的,100%肯定。 – Rimma