Anyway, can I dynamically link different named_scopes together based on some criteria at runtime?
For example, if the user accessing the data comes from the finance department, I want to be able to link only from_school and has_status together. If the user is a lecturer, I want to be able to link from_course, from_school, etc…
Should I use named_scope? Or should I go back to the old way of specifying conditions?
Thank you in advance for your suggestions! =) By the way, I am using 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 pre>Or more general
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
Dear, I have A student model, I have specified some name_scopes in it, such as from_program, from_year, from_school, has_status, from_course, etc....
Anyway, I can use a Do these standards dynamically link different named_scopes together?
For example, if the user accessing the data comes from the finance department, I want to be able to link only from_school and has_status together. If the user is a lecturer, I want to be able to link from_course, from_school, etc...
Should I use named_scope? Or should I go back to the old way of specifying conditions?
Thank you in advance for your suggestions! =) By the way, I am using rails 2.3
I am not sure, if I understand, but I think you can do this:
p>
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
Or more general
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