【问题标题】:How to get a scope for all database rows in rails 3?如何获取rails 3中所有数据库行的范围?
【发布时间】:2011-09-07 11:38:02
【问题描述】:

假设我们有以下设置:

class Post < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :posts
end

进一步假设用户有一个布尔属性“admin”,这表明他是否是全局管理员。

我想为 User 类编写一个方法(或范围?),称为“visible_posts”。如果用户不是管理员,它应该只返回自己的帖子。如果他是管理员,则该方法应返回系统中的所有帖子。

我的第一次尝试是这样的:

class User < ActiveRecord::Base

  [...]

  def visible_posts
    if admin?
      Post.all
    else 
      posts
    end
  end

end

这里的问题是 Post.all 返回一个数组,但我更希望有一个 ActiveRecord::Relation,就像我从帖子中获得的那样,以便以后使用它。

是否有可能获得代表所有帖子的 ActiveRecord::Relation ?

【问题讨论】:

  • 当您的 gem 需要数组以外的东西起作用时,这也很有用。

标签: ruby-on-rails-3 activerecord scope


【解决方案1】:

我猜你可以在 Rails 中使用Post.scoped

稍后您可以致电.all 获取结果

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 2011-08-14
  • 2014-12-02
  • 2019-04-18
  • 1970-01-01
  • 2014-09-24
  • 2015-07-21
  • 2012-11-07
相关资源
最近更新 更多