Ruby on Rails中,如何根据特定标准动态调整`named_scope`?

2026-04-11 18:532阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计334个文字,预计阅读时间需要2分钟。

Ruby on Rails中,如何根据特定标准动态调整`named_scope`?

亲爱的,我有一个学生模型,我已经在其中定义了一些name_scope,例如from_program、from_year、from_school、has_status、from_course等。无论怎样,我可以在运行时根据某些标准动态地将不同的named_scope链接起来。

亲爱的,我有一个学生模型,我已经在其中指定了一些name_scope,例如from_program,from_year,from_school,has_status,from_course等…

无论如何,我可以在运行时根据某些标准动态地将不同的named_scope链接在一起吗?

例如,如果访问数据的用户来自财务部门,我希望能够仅将from_school和has_status链接在一起.如果用户是讲师,我希望能够将from_course,from_school链接在一起,等等……

我应该使用named_scope吗?或者我应该回到指定条件的旧方法?

提前感谢您的建议! =)顺便说一句,我正在使用rails 2.3

我不确定,如果我理解,但我认为你可以这样做:

class Student named_scope from_program, lambda{|program| :conditions => {:program => program}} named_scope from_year, lambda{|year| :conditions => {:year => year}} named_scope has_status, lambda{|status| :conditions => {:status => status}} def self.from_finance(school, status) self.from_school(school).has_status(status) end end

或者更一般

def self.get_students(params) scope = self [:program, :year, :school, :course].each do |s| scope = scope.send("from_#{s}", params[s]) if params[s].present? end scope = scope.has_status(params[:status]) if params[:status].present? scope end

Ruby on Rails中,如何根据特定标准动态调整`named_scope`?

本文共计334个文字,预计阅读时间需要2分钟。

Ruby on Rails中,如何根据特定标准动态调整`named_scope`?

亲爱的,我有一个学生模型,我已经在其中定义了一些name_scope,例如from_program、from_year、from_school、has_status、from_course等。无论怎样,我可以在运行时根据某些标准动态地将不同的named_scope链接起来。

亲爱的,我有一个学生模型,我已经在其中指定了一些name_scope,例如from_program,from_year,from_school,has_status,from_course等…

无论如何,我可以在运行时根据某些标准动态地将不同的named_scope链接在一起吗?

例如,如果访问数据的用户来自财务部门,我希望能够仅将from_school和has_status链接在一起.如果用户是讲师,我希望能够将from_course,from_school链接在一起,等等……

我应该使用named_scope吗?或者我应该回到指定条件的旧方法?

提前感谢您的建议! =)顺便说一句,我正在使用rails 2.3

我不确定,如果我理解,但我认为你可以这样做:

class Student named_scope from_program, lambda{|program| :conditions => {:program => program}} named_scope from_year, lambda{|year| :conditions => {:year => year}} named_scope has_status, lambda{|status| :conditions => {:status => status}} def self.from_finance(school, status) self.from_school(school).has_status(status) end end

或者更一般

def self.get_students(params) scope = self [:program, :year, :school, :course].each do |s| scope = scope.send("from_#{s}", params[s]) if params[s].present? end scope = scope.has_status(params[:status]) if params[:status].present? scope end

Ruby on Rails中,如何根据特定标准动态调整`named_scope`?