Sta*_*len 3 named-scope ruby-on-rails
亲爱的,我有一个Student,我已经指定一些模式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
Run Code Online (Sandbox Code Playgroud)
或者更一般
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
Run Code Online (Sandbox Code Playgroud)