On 29 June 2010 03:19, RailsFan Radha <[email protected]> wrote: > RailsFan Radha wrote: >> >> I have a table called category and i want to show only the records where >> "status = A" in my list.erb >> >> currently, my list.erb shows all records from category table. >> but, i would like to show only the records where status = 'A' >> >> for example: >> select * frm category where status = 'A' >> >> the idea behind this is, i have this status column to show only the >> active records. >> This status flag accepts, >> "A" for active, >> "I" for inative and >> "R" for "Requested newly, but not yet processed". >> .. and may be others as per the futurre needs. >> >> so how can i apply this filter of where status = 'A' in my controller. >> >> def list >> @categories=Category.find_all_categories >> end >> >> >> >> - thanks, >> radha > > > Added another method to the model, > > def self.find_active_categories > find_by_sql("SELECT * from category > where status = 'A') > order by category_id ") > end
Don't use find_by_sql unless absolutely necessary. The above can be done by using the :conditions and :order options in find. Also as I suggested previously, I would use a named scope (with default_scope for the order if you will always sort by the same thing). > > And changed the controller, list action to call this new method. > > def list > @categories=Category.find_active_categories > end > > And this seems to be working. > Let me know if i have missed any or please add any additional info which > this implies too. Do you always want to just show active categories on the index? If so then that concept is ok (subject to comments above). Colin -- 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.

