0

MSSQLServerデータベースからデータを読み取るための基本的なRailsアプリを入手しようとしています。私が読んでいるチュートリアル(以下に要約)では、テーブルは特定の規則に従う必要があると述べています。たとえば、名前が複数形で下線が引かれているなどです。データベース内のどのテーブルもその規則に従っておらず、それはできません。変更する必要があります。これはまだ本当ですか?もしそうなら、そのようなテーブルと通信する方法を理解するために何を読む必要がありますか?

SNIPPET http://coding.smashingmagazine.com/2009/03/27/ultimate-beginners-guide-to-ruby-on-rails/

モデルとデータベース内のテーブルの構造と動作の間のマッピングは、テーブルの設計でいくつかのルールに準拠している場合、ほとんど完全に自動化されています。一般的な原則は次のとおりです。

  1. テーブル名は、クラス名の複数形で下線付きの変形です。したがって、クラスUserはテーブルusers.CookieRecipeにマップされます。CookieRecipeはcookie_recipesにマップされます。

  2. テーブルには、自動インクリメントプロパティを持つidという整数列に主キーが必要です。

  3. 他のテーブルへの関連付けは、それらにちなんで名付けられた列に格納されます。ユーザーに属する投稿を保存する場合、投稿テーブルにはuser_id列が必要です。

4

1 に答える 1

3

まず、Railsアプリを支える他のデータベースシステムがあり、SQLServerデータベースへの読み取り専用アクセスを追加する必要があると仮定します。

まず、app / models/rosql.rbにマスターモデルを作成します。

def Rosql < ActiveRecord::Base
   establish_connection("ROSQL#{Rails.env}")
end

次に、これをdatabase.ymlに追加します

ROSQLproduction:
  adapter: sqlserver
  mode: dblib
  dataserver: WHATEVER
  username: user
  password: password
  database: WHATEVER
  port: 1433

この最後の部分は、実際にはSQLServerへのアクセスに使用するスタックに大きく依存しています。上記は私の特定の選択の例であり、TinyTDS/Freetdsです。とにかく、次のようにSQLServerテーブルモデルの宣言を開始できます。

SqlServerTable < Rosql
  self.table_name = "non_railsy_table_name"
end

主キーを定義しようとする場合としない場合があります。

SqlServerTable < Rosql
  self.table_name = "non_railsy_table_name"
  self.primary_key "thingKey_PK"
end

だから今、thingKeyPKが文字列であると仮定してください!

@x = SqlServerTable.find("XYZ123")

動作します!

于 2012-07-03T20:58:45.237 に答える