Is it will known and accepted that before_save triggers should return
true? I didn’t notice this before but now I see it in the
documentation.
Here is what I’m doing in my model:
def before_save
if self.has_album?
self.visible = self.album.visible?
end
end
That results in the expected result when album.visible? is true - but
not when it is false. To make it work correctly, I have to explicitly
return true at the end.
def before_save
if self.has_album?
self.visible = self.album.visible?
end
true
end
Is that what I am supposed to do? It feels so wrong and C-like… is
there a better way?
On Fri, Feb 10, 2006 at 12:46:18PM -0800, Pawel S. wrote:
Is it will known and accepted that before_save triggers should return
true? I didn’t notice this before but now I see it in the
documentation.
It is not that they should return true, it is that they should not return
false.
Yes - sorry, I worded that unclearly. In my head, anything not false is
true.
Still, it’s easy to accidentally return false when updating boolean
fields like that - it took me a while to track down too. I’m afraid I
may start putting a true at the end of all of my trigger callbacks out
of sheer paranoia!
On Fri, Feb 10, 2006 at 01:01:18PM -0800, Pawel S. wrote:
Still, it’s easy to accidentally return false when updating boolean
fields like that - it took me a while to track down too. I’m afraid I
may start putting a true at the end of all of my trigger callbacks out
of sheer paranoia!
You should always be able to know if an expression is going to return
nil or
false in the case that it is boolean false. Usually it will return nil
unless
you explicitly implement something to return false or are using
operators
like ! or && that result in true or false. So, no need to be paranoid.
Just
be mindful. Your functional tests will catch you if you slip up and the
development log will indicate if a before_filter halted the filter
chain.
marcel
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.