On May 20, 11:48 am, Niklas Nson <[email protected]> wrote:
> I have made myself a small activity model like this =>
>
> # == Schema Information
> # Schema version: 20110519174324
> #
> # Table name: activities
> #
> #  id         :integer         not null, primary key
> #  account_id :integer
> #  action     :string(255)
> #  item_id    :integer
> #  item_type  :string(255)
> #  created_at :datetime
> #  updated_at :datetime
>
> belongs_to :account
> belongs_to :item, :polymorphic => true
>
> from this i can get a nice timeline/actions/userfeed or what we want
> to call it from =>
>
> def self.get_items(account)
>   item_list = []
>    items = where(:account_id => account.id).order("created_at
> DESC").limit(30)
>    items.each do |i|
>      item_list << i.item_type.constantize.find(i.item_id)

Quick note here - this can be more effectively replaced by:

item_list << i.item

since that's the whole point of the :polymorphic => true
declaration...

> it works like a charm for objects not refering to others - like if a
> user uploads a new image i can
> get the image nice and tidy. But for comments => then i want to get
> the original post info, can i get
> that in get_items directly ? Someone got tips for me ?

I suspect you'll likely be doing that farther up in the code, where
the results of get_items are used. For instance, one might do
something like this:

<%= Activity.get_items(some_account).do |item| %>
  <%= render :partial => "#{item.class.name.underscore}", :locals =>
{ :item => item } %>
<% end -%>

then the individual item partials can deal with calling more methods
on the object.

--Matt Jones

-- 
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