Hey,

Thank you so much!

It worked

SOrry for late answer but forgot to answer!

THANK YOU!

On Aug 1, 12:44 am, Josh <[email protected]> wrote:
> I took a look at my own code where I test implemented this and
> realized I have the same problem.
>
> After watching SQL in the log and playing around in script/console I
> realized this was happening
>
> If I type user.last_checkin.last_place I was getting the correct place
> if I typed user.last_place it wasn't sorting by created_at anymore in
> the query.
> The same thing is happening in the to_xml...
>
> This feels a little dirty to me, but it seems to work fine. Just
> change the line in your model describing last_place to include the
> ordered at on checkin table.
>
> has_one :last_place, :through => :last_checkin, :source
> => :place, :order => 'checkin.created_at desc'
>
> and you should see the correct 'last_place'
>
> Let me know if this worked for you.
>
> On Jul 31, 12:06 pm, Wouter <[email protected]> wrote:
>
> > Hey Josh,
>
> > Thank you for your answer. I have implemented this in my model and
> > controller and it works half.
> > I will try to explain what the problem is.
>
> > This is my code from profile.rb
>
> >   has_many :place
> >   has_many :checkin
> >   has_one :last_checkin, :class_name =>"Checkin", :order =>
> > "created_at desc"
> >   has_one :last_place, :through => :last_checkin, :source => :place
>
> > so i get the last_checkin from my database sorted by latest,
> > last_place is then the place source from my last_checkin.
> > when i get the to_xml and have as include :last_checkin i see the
> > latest checkin
>
> > <last_checkin>
> > <created_at type="datetime">2009-07-31T19:00:49Z</created_at>
> > <device nil="true"/>
> > <id type="integer">100</id>
> > <places_id type="integer">59</places_id>
> > <profile_id type="integer">3</profile_id>
> > <status/>
> > </last_checkin>
>
> > my places_id is here 59 so i want to get the source of this place. But
> > now when i do :last_place i get this
>
> > <last_place>
> > <address nil="true"/>
> > <category nil="true"/>
> > <city>Namur</city>
> > <country>BE</country>
> > <created_at type="datetime">2009-07-31T18:43:50Z</created_at>
> > <id type="integer">57</id>
> > <latitude type="float">50.4641</latitude>
> > <longitude type="float">4.86043</longitude>
> > <name>Namen</name>
> > <updated_at type="datetime">2009-07-31T18:59:58Z</updated_at>
> > <zip type="integer" nil="true"/>
> > </last_place>
>
> > The id of place here is 57.
>
> > How does this comes and what am i doing wrong?
>
> > Thank you for your help!
>
> > Wouter
>
> > On Jul 31, 7:13 am, Josh <[email protected]> wrote:
>
> > > I think the most efficient way would be to create a has_one in the
> > > model with a unique name and use the conditions or order to get just
> > > one entry. I just tested this on one of my apps and it worked pretty
> > > well.
> > > I assume here that friends are just other profiles and a profile has
> > > many checkins?
> > > so you probably have something similar in profile.rb
> > > has_many :checkins
> > > has_many :places, :through => :checkins
> > > Add (I think anyways)
> > > has_one :last_checkin, :class_name => "CheckIn", :order =>
> > > 'created_at'
> > > has_one :last_place, :through => :last_checkin, :source => :place
>
> > > And you can just do
>
> > > @profile.send('friends').find(:all, :limit => 20, :order => 'RAND()',
> > > include => :last_place) .to_xml(:include => :last_place)
>
> > > * I put :last place in the finder to eager load, and again in theto_xmlso 
> > > that is is included in the xml.
>
> > > Another way which doesn't require the model modified or a builder and
> > > is pretty ineffiecent for sql queries is
>
> > > @items = @profile.send('friends').collect do |f|
> > >   h = f.attributes
> > >   h['place'] = f.checkins.last.place.attributes
> > >   h
> > > end
> > > @items.to_xml
>
> > > Let me know if you still have problems and include the models.
> > > -Josh
>
> > > On Jul 30, 2:18 pm, cnk <[email protected]> wrote:
>
> > > > I think creating a builder file in your views directory will be the
> > > > easiest way to get exactly the xml output you want.
>
>
--~--~---------~--~----~------------~-------~--~----~
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