cwd
July 17, 2006, 11:37pm
#1
I have a database column given as:
t.column :change_address, :boolean
The user interacts with this using a checkbox, but wants confirmations
to
read:
Change address: Yes
In an isolated case something like:
@obj.change_address ? ‘Yes’ : ‘No’
Would work fine but this is peppered throughout scads of forms and
boolean
fields. The first step I took at DRYing this up was:
class TrueClass
def to_s
“Yes”
end
end
class FalseClass
def to_s
“No”
end
end
But this breaks other uses. For example observe_field constructs the
observers based on the to_s conversion of boolean attributes.
Any ideas on how to DRY this usage up?
Thanks
View this message in context:
http://www.nabble.com/DRY--Converting-Boolean-to-Yes-No-tf1957326.html#a5368812
Sent from the RubyOnRails Users forum at Nabble.com .
cwd
July 17, 2006, 11:52pm
#2
You could try something like:
def change_address?
self.change_address ? “Yes” : “No”
end
in the model.
Steve R. wrote:
I have a database column given as:
t.column :change_address, :boolean
The user interacts with this using a checkbox, but wants confirmations
to
read:
Change address: Yes
In an isolated case something like:
@obj.change_address ? ‘Yes’ : ‘No’
Would work fine but this is peppered throughout scads of forms and
boolean
fields. The first step I took at DRYing this up was:
class TrueClass
def to_s
“Yes”
end
end
class FalseClass
def to_s
“No”
end
end
But this breaks other uses. For example observe_field constructs the
observers based on the to_s conversion of boolean attributes.
Any ideas on how to DRY this usage up?
Thanks
View this message in context:
http://www.nabble.com/DRY--Converting-Boolean-to-Yes-No-tf1957326.html#a5368812
Sent from the RubyOnRails Users forum at Nabble.com .
cwd
July 17, 2006, 11:58pm
#3
I created a ‘prettifier’ plugin that extended TrueClass and FalseClass
with a ‘prettier’ method that gave me a Yes/No response. More useful if
you need the Yes/No to be available across the board. Yehuda’s response
should be sufficient if you just need it for one column.
cwd
July 18, 2006, 12:02am
#4
Yes, this handles the individual case in questions, but I have dozens of
models and many of them have one or more boolean attributes. The larger
question, then, is how to generalize the pattern?
Thanks
wycats wrote:
You could try something like:
def change_address?
self.change_address ? “Yes” : “No”
end
–
View this message in context:
http://www.nabble.com/DRY--Converting-Boolean-to-Yes-No-tf1957326.html#a5369236
Sent from the RubyOnRails Users forum at Nabble.com .
cwd
July 18, 2006, 12:08am
#5
Where is the plugin or could you post relevant code?
Philip S. wrote:
I created a ‘prettifier’ plugin that extended TrueClass and FalseClass
with a ‘prettier’ method that gave me a Yes/No response.
–
View this message in context:
http://www.nabble.com/DRY--Converting-Boolean-to-Yes-No-tf1957326.html#a5369356
Sent from the RubyOnRails Users forum at Nabble.com .
cwd
July 18, 2006, 12:08am
#6
./script/generate plugin pretty_boolean
And then modify/create the following two files:
<RAILS_APP>/vendor/plugins/pretty_boolean/init.rb
Include hook code here
require ‘pretty_boolean’
End init.rb
<RAILS_APP>/vendor/plugins/pretty_boolean/lib/pretty_boolean.rb
PrettyBoolean
module PrettyBoolean
def prettier
self ? “yes” : “no”
end
end
class FalseClass
include PrettyBoolean
end
class TrueClass
include PrettyBoolean
end
End PrettyBoolean
and, as long as the plugin is working, you can take any boolean you want
and go
some_boolean.prettier
and it’ll return “yes” or “no”
cwd
July 18, 2006, 12:12am
#7
Steve R. wrote:
Where is the plugin or could you post relevant code?
Philip S. wrote:
I created a ‘prettifier’ plugin that extended TrueClass and FalseClass
with a ‘prettier’ method that gave me a Yes/No response.
–
View this message in context:
http://www.nabble.com/DRY--Converting-Boolean-to-Yes-No-tf1957326.html#a5369356
Sent from the RubyOnRails Users forum at Nabble.com .
I think that we’re posting in between eachother here… I just posted
the relevant code