I had a similar issue with a project I was working on and was able to filter
the data using named scopes in my models.

Rails 3.0.4/5 docs Named Scope
http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html

B.


On Mon, Feb 28, 2011 at 5:08 PM, Peter <[email protected]> wrote:

> (Sorry about the lame title, if someone has a better title let me know
> and I think I can edit it)
>
> Hi,
>
> I have a design question about the best way to enable filtering of
> records at runtime, based on criteria that an end user (i.e. an admin)
> can set.  I'm sure I'm describing that poorly so let me give a semi
> contrived example.  Let's say I have the following:
> 1) a Program model, a User model, and a join table
> 2) Users have the ability to enroll in a Program (hence the join
> table)
> 3) The Program's that they can enroll in (and thus the ones that are
> shown to them) are dependent on:
>  a) Characteristics of the user (for this example let's say sex Male/
> Female, and marital status Married/Single)
>  b) Admin configuration of the Program (for example Program #1
> requires them to be Male AND Married, Program #2 requires them to be
> Female OR Single, etc.)
> 4) For 3a this information is collected during signup and at other
> types, for 3b the admins create a new program and need to be able to
> set the criteria.
>
> I'm curious the best way to store these criteria?  Right now I have a
> criteria field on Program that has a templated (in liquid), logical
> condition (parsed with treetop).  This accomplishes the features
> pretty straightforward: read all programs, evaluate each condition
> with a hash of the user attributes, show the ones that return true.
>
> However, this is clearly bad from a performance scalability standpoint
> as the whole Program table needs to be read in, which will grow and
> grow.  I can't figure out a way to make that issue go away since the
> (potential) construction of a SQL condition for the query depends on
> the particular criteria for a program.
>
> Any suggestions?
>
> Thanks,
> \Peter
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to