使用“包含后最后”模型不起作用



我卡住了(对Rails来说还很新),并且无法弄清楚为什么它不起作用:

我有:

    class Message < ActiveRecord::Base
     attr_accessible :updated_at
     has_many :categories_messages
     has_many :categories, through: :categories_messages
    end
    class CategoriesMessage < ActiveRecord::Base
     attr_accessible :category_id, :message_id
     belongs_to :category
     belongs_to :message
    end
    class Category < ActiveRecord::Base
     attr_accessible :name
     has_many :categories_messages
     has_many :message, through: :categories_messages
    end
    @messagesPer = Category.all.includes(:messages).group('categories.id').order("COUNT(messages.id) DESC")

    <% @messagesPer.each_with_index do |message,  i| %>
         <tr>
            <td><%= i+1 %></td> 
            <td><%= message.name %></td>
            <% if message.categories_messages.exists? %>
                <td><%= message.messages.last.updated_at.to_s.to_date %></td>
                <td><%= message.messages.first.updated_at.to_s.to_date %></td>
                <td><%= message.messages.count %></td>
            <% else %>
                <td>0</td>
                <td>0</td>
            <% end %>
        </tr>
    <% end %>

所以我希望它显示:类别的名称、创建最后一封邮件的日期、创建第一封邮件的日期以及该类别中的所有邮件。

ALl 工作正常,除了它只显示创建第一条消息的日期,但从不显示最后一条消息的日期(仍然在最后一条消息上显示第一个日期)。我做错了什么?

更新:

如果我把

     @messagesPer = Category.all.includes(:messages).group('categories.id')

确实显示了最后和第一条消息的正确日期,但是一旦我添加顺序,它就会中断......

包含您在

查询中添加订单子句后获得的错误信息可能会有所帮助。

但是,我可以在代码中发现一些奇怪的事情。CategoriesMessage模型的存在似乎只是为了满足一个类别可以有许多消息的条件,反之亦然。不过,你不需要这种多对多关系的模型,Rails会自动为你处理这个问题。

您的模型应如下所示:

class Message < ActiveRecord::Base
 attr_accessible :updated_at
 has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
 attr_accessible :name
 has_and_belongs_to_many :messages
end

在您的数据库中,您有这些表:messagescategories, categories_messages , where the last one is the join table which only contains columns for a message_id and a category_id'。

然后,您可以在代码中简单地执行以下操作:

category.messages.each { |message| puts message.updated_at }

另请参阅这篇 Ruby on Rails 教程文章以获取更多信息。如果这对您不起作用,请发布您得到的确切错误。

相关内容

  • 没有找到相关文章

最新更新