我在 Windows XP...
Ruby 1.9.2
Rails 3.0.9
MS SQL Server 2005
我正在使用tiny_tds + activerecord-sqlserver-adapter
在我的数据库中,我有一个名为t4的表。我创建了一个这样的模型:rails generate model t4 这是我的简单模型t4.rb:
class T4 < ActiveRecord::Base
end
这是迁移文件20111013125957_create_t4s.rb:
class CreateT4s < ActiveRecord::Migration
def self.up
create_table :t4s do |t|
t.timestamps
end
end
def self.down
drop_table :t4s
end
结尾
我有schema.rb:
...
create_table "t4", :force => true do |t|
t.string "title", :limit => 50
end
...
问题: 当我尝试 T4.select("title").where(["id = 3"]) 时,我收到错误消息:ActiveRecord::StatementInvalid: TinyTds::Error: Invalid object name 't4s'.: SELECT title FROM [t4s] 哪里(id = 3)
PS: 我还有一些名为Adddocs和Eclaims的表。对他们的查询没有问题。
我猜这个问题是T4.select("title").where(["id = 3"])映射到SELECT title FROM [t4s] WHERE (id = 3)(T4到t4s)。为什么?我不知道
但是当我像这样编辑文件config/initializers/inflections.rb时:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 't4', 't4'
end
一切正常!但这不是合适的解决方案(我认为语气不好):(((