Add virtual attribute

33 views
Skip to first unread message

Linus Pettersson

unread,
Jul 31, 2011, 3:00:04 PM7/31/11
to rubyonra...@googlegroups.com
Hi!

Let's say I have an app that handles a TODO list. The list has finished and unfinished items. Now I want to add two virtual attributes to the list object; the count of finished and unfinished items in the list. I also need these to be displayed in the json output.

How do I achieve that?

Best Regards
Linus

Colin Law

unread,
Jul 31, 2011, 3:14:27 PM7/31/11
to rubyonra...@googlegroups.com

Define two scopes on List that return the finished and unfinished items then use
List.unfinished.count

Colin

> Best Regards
> Linus
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-/aFmyk69tHdUJ.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-ta...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>

Linus Pettersson

unread,
Jul 31, 2011, 3:19:54 PM7/31/11
to rubyonra...@googlegroups.com
I already have done that, like this:

def unfinished_items
   self.items.where("status = ?", false)
end

def finished_items
  self.items.where("status = ?", true)
end


So I can use the List.unfinished.... But how do I add it as attributes to the json output?

Andrew Skegg

unread,
Jul 31, 2011, 5:38:03 PM7/31/11
to rubyonra...@googlegroups.com
Linus Pettersson <linus.pettersson@...> writes:

> So I can use the List.unfinished.... But how do I add it as attributes to
the json output?
>
>
>

Seems you are confusing search patterns with object output. Your JSON output
should already include a "status" field.

Tower He

unread,
Aug 1, 2011, 6:29:32 AM8/1/11
to rubyonra...@googlegroups.com
Acts_as_api will help you. It is a really awesome gem.

发自我的 iPhone

> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.

Linus Pettersson

unread,
Aug 1, 2011, 11:49:16 AM8/1/11
to rubyonra...@googlegroups.com
Well, yes but that's not the point.

Items have a status field. Lists has many items.
When displaying a List as JSON I want it to have an attribute that counts how many finished items there are in the list and how many unfinished items there are in the list. The above methods only fetches the items, and I'd have to count the result of that of course.

Tower He

unread,
Aug 1, 2011, 12:47:37 PM8/1/11
to rubyonra...@googlegroups.com
class TodosController < ApplicationController
  def show
    @todo = Todo.find(params[:id])
    respond_to do |format|
      format.json { render_for_api :public, :json => @todo }
    end
  end
end

class Todo < ActiveRecord::Base
  has_many items

  acts_as_api

  api_accessible :public do |t|
    t.add "items.finished_items.all", :as => finished_items
    t.add "items.unfinished_items.all", :as => unfinished_items
    t.add "items.finished_items.count", :as => num_of_finished_items
    t.add "items.unfinished_items.count", :as => num_of_unfinished_items
  end
end

class Item < ActiveRecord::Base
  belongs_to todo

  scope :finished_items, where(:status => 'finished')
  scope :unfinished_items, where(:status => 'unfinished')

  acts_as_api
end

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/gy0mFW1iV44J.

To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.



--
Tower He

Annapoorna R

unread,
Aug 4, 2011, 4:28:59 AM8/4/11
to rubyonra...@googlegroups.com
hi..
i got prob with creating mailer in rails 3
i used rails g mailer UserMailer.. .. how to define method in usermailer....?n cal that method..?

Colin Law

unread,
Aug 4, 2011, 4:44:40 AM8/4/11
to rubyonra...@googlegroups.com
On 4 August 2011 09:28, Annapoorna R <prapo...@gmail.com> wrote:
> hi..
> i got prob with creating mailer in rails 3
> i used rails g mailer UserMailer.. .. how to define method in
> usermailer....?n cal that method..?

What has that got to do with the subject of this thread, which is Add
virtual attribute? It is best to start a new thread for a new
subject, with a subject line that matches the question.

Colin

Reply all
Reply to author
Forward
0 new messages