假设我们有以下设置:
class Post < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :posts
end
进一步假设用户有一个 bool 属性“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 ?
最佳答案
我猜你可以在 Rails 中做 Post.scoped
稍后您可以调用 .all
来获取结果
关于ruby-on-rails-3 - 如何获取rails 3中所有数据库行的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333198/