Support for 'readonly' attributes
Reported by Justin Ossevoort | June 24th, 2009 @ 01:31 PM
It would be nice if one could easily prevent the generation of the setter method. Perhaps something along the lines of Moose's 'is' property:
has :uuid, :is => :ro, :kind => UUID
(And a uuid is obviously read-only ;-))
p.s.
What is the recommended way to flag a ticket as 'wish list' or
'feature' request? By using tags?
p.p.s.
I don't necessarily want you to do all the work, but I'm flagging
stuf I'm missing so that pherhaps they will be implemented, there
is a nice workaround/alternative or I'll implement them myself and
send a patch :-)
Comments and changes to this ticket
-
Sean O'Halpin October 11th, 2009 @ 02:34 AM
- State changed from new to resolved
Use the :readonly option (introduced in version 0.1.9):
require 'doodle' class Foo < Doodle counter = 0 has :uid, :readonly => true do init { counter += 1 } end end bar = Foo.new bar.uid # => 1 bar.uid = 2 # ~> -:12: Trying to set a readonly attribute: uid (Doodle::ReadOnlyError)
Hmmm. I've had a look at the documentation and found that :readonly is not documented. Also, it fails to protect overwriting in certain edge cases (e.g. when you use #defer_validation).
-
Sean O'Halpin October 11th, 2009 @ 02:37 AM
Regarding your other points:
By all means tag a ticket with "feature" to denote a feature request.
I'd welcome any patches - no promises to incorporate them though ;)
-
Justin Ossevoort October 12th, 2009 @ 08:03 AM
Ah I was wondering how to do that, I'm more used to traditional issue tracking systems which have a clear classification, but I can see how tags help to simulate this ;-)
And great that the <:readonly> flag was already present, I guess I should have studied doodles core more ;-)
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
This site is for tracking issues for the doodle rubygem.
doodle is a Ruby gem for creating extended attribute accessors with defaults, conversions and validations.
See http://doodle.rubyforge.org/ for more details.