Ruby on Rails Tuesday, June 29, 2010

On 29 June 2010 03:19, RailsFan Radha <lists@ruby-forum.com> 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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment