Thanks for pointing out my schoolboy error there Jon!
This now works:
post '/new' do
@page = Page.create(params[:page])
@page.url = '/mysite/' << @page.id.to_s
@page.save
....etc
But this feels really ugly - surely this logic should be in the model,
not the controller? In this implementation, the url only gets saved
when the resource is created on the web.
Is there a way to do something similar using the after :create hook? I
can't see why this doesn't work, as it should do the same as the code
above:
after :create do
self.url ='/mysite/' << self.id.to_s
self.save
end
cheers,
DAZ
On Apr 5, 10:59 pm, Jonathan Stott <[email protected]> wrote:
> For that to work, you want `[email protected]` not `self.id`
>
> Regards
> Jon
>
> On 5 April 2011 22:55, DAZ <[email protected]> wrote:
>
>
>
>
>
>
>
> > Since I couldn't get the after :create hook to work, I tried putting
> > this ugly code in a handler:
>
> > post '/new' do
> > @page = Page.create(params[:page])
> > @page.url = '/mysite/' << self.id.to_s
> > @page.save
>
> > This 'works', but strangely the id seems to be an object id, rather
> > than the id property from the database. What's going on here??
>
> > There must be a way of using a resource's id property to set another
> > property ... surely?
>
> > cheers,
>
> > DAZ
>
> > On Apr 5, 5:47 pm, DAZ <[email protected]> wrote:
> >> > Is there any 'best practice' way of doing this sort of thing?
>
> >> > For example, do I use an after :create hook and then call self.save at
> >> > the end?
> >> > eg
> >> > after :create do
> >> > self.url ='/mysite/' << self.id.to_s
> >> > self.save
> >> > end
>
> >> Well the 'best practice' way is definitely not this way because it
> >> returns false - the resource is created but then is not saved
> >> afterwards and the url property is considered 'dirty' (what does that
> >> actually mean??
>
> >> I'm puzzled by this!
>
> >> DAZ
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "DataMapper" 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
> > athttp://groups.google.com/group/datamapper?hl=en.
--
You received this message because you are subscribed to the Google Groups
"DataMapper" 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/datamapper?hl=en.