我可以在Rails 3中使用控制器中的方法吗?

时间:2012-05-23 18:02:04

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

我的成员模型中有一个方法来确定成员是否是管理员:

  def is_admin?; self.member_role.admin == true; end

如何在我的控制器中使用它来查找所有不是管理员的用户?

我的控制器已经非常紧凑:

    @names = Member.where("fullname LIKE ?", "#{params[:letter]}%").order("fullname ASC").page(params[:page]).per(18)

我希望不必在我的观点中使用拒绝{}

2 个答案:

答案 0 :(得分:2)

您可以在模型中创建范围,如:

scope :non_admins, where(:admin => false)

在你的控制器中:

@names = Member.where("fullname LIKE ?", "#{params[:letter]}%").non_admins.order("fullname ASC").page(params[:page]).per(18)

答案 1 :(得分:0)

最好的方法 - 在模型中使用范围Ruby guides - scopes

将过滤器和订单放在范围声明中并在控制器中使用范围