2

Rails を使用して既存の Sybase データベースに接続し、いくつかの選択リストを作成しようとしています。これまでに行ったことは次のとおり
です。 1. FreeTDS をインストールして構成しました
2. TinyTDS gemをインストールしました

command を実行するtsql -S serverName -U userNameと、データを照会できます。私はconfig/database.ymlそのように構成しました:

development:  
  adapter: sybase  
  host: <sybase_host>  
  port: <port_no>  
  username: <user>  
  password: <password>  
  database: <db>

次に、作成したファイルを介してモデルを生成し、次 のようrails generate model sybase_db --skip-migrationに編集してみました。app/models/sybase_db.rb

class SybaseDb < ActiveRecord::Base  
  set_table_name "my_sybase_table"  
end

SybaseDb.newでコマンドを実行しようとするとrails console、うまくいかないようです。私はRailsにかなり慣れていないので、何が間違っていますか?

ありがとう!

4

1 に答える 1

1

sybase_db と呼ばれるモデルを生成する部分まで、すべてが適切に見えます。Rails のモデルは通常、データベース全体ではなく、データベース内の特定のテーブルにリンクされます。Rails では命名規則を使用して、テーブルと列をモデルと属性に簡単にリンクできます。

たとえば、User属性nameを持つモデルがあり、emailそれがデータベース内のテーブルにリンクされていて、users列を持つname場合email、あらゆる種類の優れた Rails マジックが機能します。Rails コンソールを起動して実行するUser.allと、データベース内のすべてのユーザーのコレクションを生成できます。または、次のようなことをするかもしれません

> u = User.find_by_email 'joe@example.com'
=> #<User id: 123, email: "joe@example.com", name: "Joe"...>
> u.name
=> "Joe"

ただし、既存のデータベースがある場合は、Sybase の名前を Rails システムの名前にマップする方法を Rails に詳しく説明する必要がある可能性があります。これの1つのケースがありset_table_nameます-Sybaseテーブルの名前t_userが主キーであるuser_idが、列がnameあり、次のemailようなRailsモデルを作成できる場合

class User < ActiveRecord::Base
  set_table_name "t_user"
  set_primary_key "user_id"
end

Quora でのこのトピックのディスカッションと、さらに先に進むために使用できるいくつかの優れたリンクを次に示します。

既存のシステムの規模によっては、Rails の魔法がすべて消えてしまうことがあります。Rails は、これをあれにマッピングすることをすべて回避するのに役立ち、強力な命名規則に従って、あらゆる種類の素晴らしいクールさを提供してくれます。既存のシステムに強力で予測可能な命名規則があり、Rails のやり方からそれほど離れていない場合は、Rails をうまく使用できる可能性があります。

于 2012-10-11T03:24:43.517 に答える