【发布时间】: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