誰かがこれを手伝ってくれることを望んでいて、1週間それを理解しようとしていたので、たくさんの例を見つけましたが、私はレールに慣れていないので、どこかで間違いを犯し続けていると思います。私の場合の正しい解決策。ので、私は持っています:
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
メッセージはさまざまなブログ(ピンクブログ、グリーンブログ、マルーンブログなど)に存在し、ブログはサブジェクト(暗い色、明るい色など)に存在します。サブジェクトには多くのブログがありますが、ブログは1つのサブジェクトにのみ属することができます。
BlogsMessagesは、メッセージとブログの間の接続であり、私が行おうとしているのは、1つのサブジェクト内の上位3つのブログ(メッセージの量による)です。
たとえば、Subject Dark Colorsを選択すると、次のように表示されます。
1.Maroon Blog: 46 messages
2.Grey Blog: 13 messages
3.Purple Blog: 12 messages
(Subject Dark Colorsには全部で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 %>