我正在使用Intridea的Acts作为Readable Rails插件,用于我正在构建的消息传递系统。 我已相应地定义了我的消息类:

class Post < ActiveRecord::Base
  acts-as-readable
end

一切似乎都按计划运行,但是当我试图让应用程序在我的消息视图中显示未读消息时,我遇到了问题。

他们的例子:(由于格式问题,我将下划线更改为连字符)

bob = User.find_by_name("bob")

bob.readings                      # => []

Post.find_unread_by(bob)          # => [<Post 1>,<Post 2>,<Post 3>...]
Post.find_read_by(bob)            # => []

Post.find(1).read_by?(bob)        # => false
Post.find(1).read_by!(bob)        # => <Reading 1>
Post.find(1).read_by?(bob)        # => true
Post.find(1).users_who_read       # => [<User bob>]

Post.find_unread_by(bob)          # => [<Post 2>,<Post 3>...]
Post.find_read_by(bob)            # => [<Post 1>]

bob.readings                      # => [<Reading 1>]

所以,如果我想列出邮箱中的未读邮件数量(例如收件箱(39)),我应该能够做到这样的事情:

<%= Post.find_unread_by(current-user).count %>

但无济于事。 在设置好所有内容之后,我似乎总是陷入简单的视图问题。 有任何想法吗?

===============>>#1 票数:11 已采纳

以下将有效

<%= Post.find_unread_by(current_user).size %>

要么

<%= Post.find_unread_by(current_user).length %>

但是,如果您检查您的development.log,您应该会看到它获得未读数

  1. 检索所有帖子
  2. 检索用户读取的所有帖子
  3. 在红宝石中从1.中删除所有2.

对于很多帖子来说,这将是非常糟糕的表现。

更好的方法是检索当前用户读取的帖子,然后使用ActiveRecord :: Calculations获取计数而不检索数据库中的所有帖子

Post.count(:conditions => [ "id NOT IN (?)", Post.find_read_by(current_user)])

这应该进入你的Post模型,以遵循在视图或控制器中没有查找器的最佳实践

Post.rb

def self.unread_post_count_for_user(user)
  count(:conditions => [ "id NOT IN (?)", Post.find_read_by(user)])
end

然后你的观点将是

<%= Post.unread_post_count_for_user(current-user) %>

  ask by btw translate from so

未解决问题?本站智能推荐:

2回复

Ruby on Rails插件acts_as_ferret是否非常容易越野车?

我正在使用acts_as_ferret对数据库进行非常简单的搜索。 我将其放在“场地”模型中: 这是在我的控制器搜索操作中: 然后我只渲染结果。 如果我进行快速测试: 我在日志中看到正在对索引执行正确的查询“ The〜”。 但是,我没有结果。 我肯定在名称字
2回复

rails 3和行为可读

act-as-readable插件是否适用于rails 3? https://github.com/mbleigh/acts-as-readable上的说明导致Plugin not found: ["http://svn.intridea.com/svn/public/acts_as_read
1回复

扩展Rails插件

我需要通过覆盖一种方法并添加自己的方法来扩展插件。 到目前为止,我已经按照“ 严格无类型”的指南进行操作,但是并没有取得太大的成功。 基本上,初始化文件夹中有一个文件,用于从lib目录中加载扩展名。 在初始化文件夹中,我有一个与此相关的文件: 当我打开,我想扩大原有的类,然后包
1回复

如何在acts_as_taggable_on_steroids插件的标签中添加第二个参数

在我的Rails应用程序中,我尝试使用acts_as_taggable_on_steroids插件,但是它有点不足。 我想向每个标记添加第二个参数,以描述它所标记的内容。 不是类,我知道它记录在标签联接表中。 例如,如果我要标记一个采访,我会以(“ microsoft”,“ company
1回复

Ruby on Rails的沙盒插件

我正在寻找一个Web应用程序,它将运行来自不受信任来源(即社区提交的内容)的插件。 因此,我需要将这些插件锁定到沙箱中,仅允许某些访问权限(无法写入磁盘等)。 理想情况下,该插件只能使用某些批准的软件包和API。 这在Ruby on Rails中可行吗? 如果是这样,您能指出我要入门
4回复

为Rails编写ActiveRecord插件

我正在编写我的第一个Rails插件,可能需要一些帮助。 以一种非常简化的方式,我想允许开发人员指定一个可以通过rake任务计数的值。 我在想这样的事情... 我想监视器必须是ActiveRecord :: Base的类方法,但是如何/在哪里在插件中指定它呢? monito
1回复

无法安装Rails插件

我的问题是: ruby script/plugin无法正常工作(我看不到任何HTTP流量,也没有错误消息等),这可能是什么原因? 我忘了设置什么吗? 到目前为止,我的进度(使用Windows XP): 解压后的hxxp://files.rubyforge.vm.bytemark
1回复

在将Redbox插件安装到Rails时,为什么会显示未找到插件?

当我尝试安装redbox插件(尽管一切都已安装)时,最后一行说未找到插件。 这是为什么 ?
6回复

你想看看哪些Rails插件?

您认为在Rails应用程序中实现了哪些行为可以很好地作为插件存在? 您在过去搜索过哪些插件功能但找不到? 什么现有的Rails插件可以改进或扩展,以及如何?
1回复

Rails:麻烦通过插件包含模块

我正在尝试创建一个Rails插件,我面临的问题是,在迁移插件时,该应用程序将不包含我的模块。 这是我到目前为止的内容: 1.带有扩展代码的文件lib/patch/settings_helper_patch.rb 2.具有require_dependency 'patch/setti