The form that you are talking about is the search form.  We don't convert
param[:record] to a class object for the search form.

the search is working for you correct?

On Mon, Mar 16, 2009 at 9:39 AM, naaano <[email protected]> wrote:

>
> Looks like type_cast does the job, which is what Sergio used.
> value_to_boolean converts it to a ruby boolean, and then is the job of
> each database connector.
> I wonder now, is this the official rails way of parsing a boolean from
> a form? Shouldn't be cast when converting the param[:record] into a
> class object?
>
> 66:       def type_cast(value)
> 67:         return nil if value.nil?
> 68:         case type
> 69:           when :string    then value
> 70:           when :text      then value
> 71:           when :integer   then value.to_i rescue value ? 1 : 0
> 72:           when :float     then value.to_f
> 73:           when :decimal   then self.class.value_to_decimal(value)
> 74:           when :datetime  then self.class.string_to_time(value)
> 75:           when :timestamp then self.class.string_to_time(value)
> 76:           when :time      then self.class.string_to_dummy_time
> (value)
> 77:           when :date      then self.class.string_to_date(value)
> 78:           when :binary    then self.class.binary_to_string(value)
> 79:           when :boolean   then self.class.value_to_boolean(value)
> 80:           else value
> 81:         end
> 82:       end
>
>
> On 16 mar, 10:15, Kenny Ortmann <[email protected]> wrote:
> > Fun.  none of these work in oracle, TRUE, 't', 'true', 'y', 'yes', '1',
> > FALSE, 'f', 'false', 'n', 'no', '0'
> > So we need to take a different approach to the value.to_i and value.to_s
> >
> > On Mon, Mar 16, 2009 at 9:04 AM, naaano <[email protected]> wrote:
> >
> > > In postgresql is stored as a bit, not numbers, chars or strings. The
> > > "true/false" is just a representation for input, which are many
> > > alternatives, as postgresql doc says:
> >
> > >  Valid literal values for the "true" state are:
> >
> > > TRUE
> > > 't'
> > > 'true'
> > > 'y'
> > > 'yes'
> > > '1'
> >
> > > For the "false" state, the following values can be used:
> >
> > > FALSE
> > > 'f'
> > > 'false'
> > > 'n'
> > > 'no'
> > > '0'
> >
> > > However, that '0' and '1' are read as chars/strings, that is with ""
> > > or '' which the ["#{column.search_sql} = ?", value.to_i] skips.
> >
> > > On Mar 14, 12:22 am, Kenny Ortmann <[email protected]> wrote:
> > > > Yeah if you use it in conditions like that then it does work but if
> you
> > > us
> > > > it like this
> > > > ["#{column.search_sql} = ?", value.to_i]
> >
> > > > then it needs the 1, 0 or sqlite would need 't' or 'f'
> >
> > > > On Fri, Mar 13, 2009 at 6:17 PM, <[email protected]> wrote:
> >
> > > > > On Fri, 13 Mar 2009 08:52:27 -0500, Kenny Ortmann <
> > > [email protected]
> >
> > > > > wrote:
> > > > > > I don't think the actual problem was in the search select drop
> downs.
> >
> > > > > > Once you pass 0 or 1
> > > > > > ["#{column.search_sql} = ?", value.to_s] it would evaluate to
> "column
> > > =
> > > > > > '1'"
> > > > > > or "column = '0'"
> > > > > > true or false
> > > > > > ["#{column.search_sql} = ?", value.to_s] it would evaluate to
> "column
> > > =
> > > > > > 'true'" or "column = 'false'" <-- won't work in oracle
> >
> > > > > > but as Sergio said, rails-2.2 and master branches have
> > > > > > ["#{column.search_sql} = ?", column.column.type_cast(value)]
> >
> > > > > > I would hope if you do
> > > > > > ["#{column.search_sql} = ?", column.column.type_cast(value)]
> > > > > > with 'true' or 'false' that it will convert it to 1 or 0, if it
> > > doesn't
> > > > > > convert it to 1 or 0 then it won't work with oracle.
> >
> > > > > > I don't know how type_cast works though.
> >
> > > > > For mysql it's converted to 1 or 0, in sqlite it's converted to 't'
> or
> > > 'f'.
> > > > > In other databases I don't know, but it should work, I think it's
> used
> > > in
> > > > > Model.find :all, :conditions => {:boolean_column => true} for
> example.
> >
> > > > > > On Fri, Mar 13, 2009 at 5:04 AM, Sergio Cambra .:: entreCables -
> > > Symbol
> > > > > > Servicios Informáticos S.L. ::. <[email protected]> wrote:
> >
> > > > > >> El Thursday 12 March 2009 18:56:30 naaano escribió:
> > > > > >> > Acording to SQL ISO standard, boolean types are "CRUDed" as:
> > > > > >> > TRUE - FALSE
> > > > > >> > However, Mysql doesn't have real support for boolean types,
> > > instead
> > > > > >> > using a patched way of tinyint.
> > > > > >> > Not surprising that most users use this database engine, the
> code
> > > > > >> > developed to interact with databases is first made with Mysql
> in
> > > > > >> > mind.
> > > > > >> > So, AS doesn't have problems with this since most of it is
> handled
> > > via
> > > > > >> > ActiveRecord, but there's some harcoded SQL in it.
> Particulary,
> > > this
> > > > > >> > mistakes reflect on 2 parts/files:
> >
> > > > > >> > 1.- the search_ui (search_column_helpers.rb: line
> > > > > >> > 106:active_scaffold_search_boolean)
> > > > > >> > 2.- the finder constructor (finder.rb: condition_for_column,
> line
> > > 39)
> >
> > > > > >> > However, Mysql supports SQL ISO standard for this, so,
> switching
> > > the
> > > > > >> > code to SQL standard makes it work for all database engines:
> >
> > > > > >> > in search_column_helpers.rb, lines 109 and 110:
> > > > > >> >  select_options << [as_(:true), true]
> > > > > >> >  select_options << [as_(:false), false]
> >
> > > > > >> I have fixed it, thanks.
> >
> > > > > >> > in finder.rb, line 39:
> > > > > >> > ["#{column.search_sql} = ?", value.to_s]
> >
> > > > > >> In rails-2.2 and master branches is:
> > > > > >> ["#{column.search_sql} = ?", column.column.type_cast(value)]
> > > > > >> I think it should be work for postgresql
> > > > > >> What rails and AS version are you using?
> >
> > > > > >> --
> > > > > >> Sergio Cambra .:: entreCables S.L. ::.
> > > > > >> Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
> > > > > >> T) 902 021 404 F) 976 52 98 07 E) [email protected]
> >
> >
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" 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/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---

  • AS... naaano
    • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
      • ... Kenny Ortmann
        • ... naaano
          • ... Kenny Ortmann
        • ... sergio
          • ... Kenny Ortmann
            • ... naaano
              • ... Kenny Ortmann
                • ... naaano
                • ... Kenny Ortmann
      • ... naaano

Reply via email to