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

Ruby on rails 我可以在Rails 3的控制器中使用方法吗,ruby-on-rails,ruby-on-rails-3,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) 我不想在我的视图中使用

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

  def is_admin?; self.member_role.admin == true; end
我如何在我的控制器中使用它来查找所有不是管理员的用户

我的控制器已经很满了:

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

我不想在我的视图中使用reject{},这是最好的方法——在模型中使用作用域


在范围声明中放置过滤器和命令,并在控制器中使用范围

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

scope :non_admins, where(:admin => false)
在控制器中:

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

admin列实际上位于名为member\u role的单独表中,因此我不能使用:admin符号。您仍然可以通过关联使用它,如user.member\u role.non\u admins,并在其中设置范围。请注意,成员角色模型很可能是多余的。如果你正在设置角色,你应该在你的用户模型中使用一个常量数组来设置它们。我的意思是,我如何使用我在我的成员模型中写的方法,“is_Artister?”在范围中?我已经尝试了一些方法,但是一直得到未定义的方法errorsbump!您是否有如何在用户模型中使用常量数组的链接?我应该开始使用最佳实践。为了清楚起见,请把它变成一个新问题,我会在那里回答。简言之,它类似于LIST=%w[一二三],但让我们在另一篇文章中保留这一点。