私はWindowsXPを使用しています...
Ruby1.9.2
Rails 3.0.9
MS SQL Server 2005
tiny_tds+activerecord-sqlserver-adapterを使用しています
私のデータベースには、t4という名前のテーブルがあります。私は次のようなモデルを作成しました:railsはモデル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] WHERE(id = 3)
PS:AdddocsとEclaims という名前のテーブルがもう1つあります。それらへのクエリに問題はありません。
問題は、T4.select( "title")。where(["id = 3"])がSELECT title FROM [t4s] WHERE(id = 3)(T4 to t4s)にマップされることだと思います。なんで?知らない
しかし、ファイルconfig / initializers / inflections.rbを次のように編集すると、次のようになります。
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 't4', 't4'
end
すべてが機能します!しかし、それは適切な解決策ではありません(私が思うに悪いトーン):(((