Microsoft SQL Server has me stumped


#1

I’m tinkering around with an old legacy table in SQL Server 2000.
Ruby 1.8.4, most recent ADO.rb file from RubyForge, Rails 1.0

Here’s the model:

class InventoryItem < ActiveRecord::Base
set_table_name “[SMDBA].[INVENTOR]”
set_primary_key “sequence”
end

Everything works fine. I can retrieve records without issue.

However, when create a new instance of InventoryItem, there are no
attributes returned!

i = InventoryItem.new
#<InventoryItem:0x365eee0 @new_record=true, @attributes={}>

Anyone know where I would start looking?

Seems strange then that InventoryItem.find(:first) would return a full
attribute set with all of the data appropriately assigned…

Thanks in advance!


#2

Sorry, but what attributes are you expecting when creating brand new
record
using InventoryItem.new?


#3

Well, generally, I’d have an attributes hash filled with the fields in
my
table.
I have a column in the table called “computername”
When I do

i = InventoryItem.new
i.computername = ‘test’

I get a NoMethodException.

It’s really strange. It happens with all of my other tables as well.


#4

Have you tried making a copy of the table without the underscore
characters and see if that works?

Just thinking that the underscores have meaning and may be clouding the
logic.

Does the sequence field have meaing in rails?


#5

Ugh. If I have to remove the underscores then there’s no way I can use
Rails
for this project. These are legacy tables for a third-party (purchased)
system.

As for updating, it appears to be working just fine.


#6

I found my own solution to this problem. The square brackets that wrap
the
table name had to be removed.

set_table_name “SMDBA.INVENTOR

instead of
set_table_name “[SMDBA].[INVENTOR]”

Thanks for the suggestions.


#7

Brian H. wrote:

Anyone know where I would start looking?

Can you update an existing InventoryItem?