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.

Reply via email to