Hi,
I think I've found where the problem is.
In the file lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-0.9.1/lib/
jdbc_adapter/jdbc_oracle.rb, there's this :
module JdbcSpec
...
module Column
...
private
def simplified_type(field_type)
case field_type
when /^number\(1\)$/i : :boolean
when /char/i : :string
when /float|double/i : :float
when /int/i : :integer
when /num|dec|real/i : @scale ==
0 ? :integer : :decimal
when /date|time/i : :datetime
when /clob/i : :text
when /blob/i : :binary
end
end
end
end
When I read my model columns, both integer and number(x,0) Oracle
columns report as following :
#<ActiveRecord::ConnectionAdapters::JdbcColumn:0x18af9c0
@precision=nil, @limit=nil, @sql_type="NUMBER", @name="id",
@type=:decimal, @scale=nil, @null=false, @primary=true, @default=nil>
As @scale is nil and not 0, the simplified_type returned is :decimal,
not :integer.
The corresponding case line :
when /num|dec|real/i : @scale ==
0 ? :integer : :decimal
should be replaced by :
when /num|dec|real/i : (@scale.nil? ||
@scale == 0) ? :integer : :decimal
This works fine for me. If it does for you, could you please open an
issue so that the next version includes it ?
Kind regards,
--
Guillaume Desrat
http://www.rubyfrance.org/
On 20 mar, 15:41, Sylvain <[email protected]> wrote:
> Hello Nick,
> I experience the same bug described by Mark with version 0.9.1, so I
> guess he did not file a bug report in Jira.
> Can you please confirm, so I open a bug ?
> One last question, when do you plan to release a 0.9.2 version ?
>
> Thanks again for your time and your work you give to the ruby and
> rails community.
>
> Sylvain
>
> On Mar 4, 5:27 am, Nick Sieger <[email protected]> wrote:
>
> > On Tue, Mar 3, 2009 at 1:40 PM, Mark Becker
>
> > <[email protected]> wrote:
>
> > > I'm having aproblemusing jruby on rails with a legacyoracledatabase
> > > (OracleDatabase 10g Enterprise Edition Release 10.1.0.3.0). Theoracle
> > >numberprimary key is getting converted into a decimal, which is causing
> > > restful style URIs not to work. For example I'm seeing URIs like
> > >http://localhost:3000/members/show/7201.0?tab=nameswheretheidshould
> > > be an integer, not a double, and they result in "Missing template"
> > > errors.
>
> > > A friend of mine said that the sameproblemarose for him when he
> > > updated fromactiverecord-jdbc-adapterversion 0.8 to version 0.9, which
> > > is what I'm using. Is this a known issue? Is there a workaround short
> > > of changing the database to use integer primary keys? That isn't an
> > > option for us.
>
> > > Here's my configuration:
>
> > > jruby 1.1.6 (ruby 1.8.6 patchlevel 114) (2008-12-17 rev 8388)
> > > [amd64-java]
> > > rails (2.2.2)
> > >activerecord(2.2.2)
> > >activerecord-jdbc-adapter(0.9)
>
> > If you could file a bug [1] and provide a short test case, we'll try
> > to have this fixed for 0.9.1, due out in a week or two. In your
> > example/test case, please be sure to provide the schema or migration
> > that you use to create the table.
>
> > Thanks,
> > /Nick
>
> > [1]:http://kenai.com/jira/browse/ACTIVERECORD_JDBC
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" 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/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---