0

特定の問題のリソースを見つけるのに問題があるか、少なくとも見つけたリソースがわかりません。

リモートのMySQLデータベースにクエリを実行してデータを返すことができるようにするには、Sinatraアプリが必要です。私はデータベースへの読み取り専用アクセス権を持っているので、私がする必要があるのはそれを取得することだけです。dbが機能し、接続が機能し、使用しようとしているクエリが機能することはわかっています。サンプルコードは次のとおりです。

db = ActiveRecord::Base.establish_connection(
  adapter:  'mysql', 
  host:     host, 
  database: database,
  username: user,
  password: pass)

次に、このようなもので接続を照会しようとしています

@courses = db.find_by_sql("SELECT *")

しかし、dbオブジェクトにはfind_by_sqlメソッドがなく、実際にその仕事をしているように見えるメソッドもありません。dbをクエリできる場所に到達するためのステップなどが不足していますか、それとも他の何かですか?

4

1 に答える 1

4

の戻り値がわかりませんestablish_connection。おそらくあなたが望むものではないのではないかと思います。実行する通常の方法find_by_sqlは次のとおりです。

ActiveRecord::Base.find_by_sql(...)

すでにモデルをお持ちの場合は、次のこともできます。

MyModel.find_by_sql(...)

もう1つの方法は、接続アダプタオブジェクトに直接アクセスして呼び出すexecuteことです。

ActiveRecord::Base.connection.execute(...)
于 2012-06-26T16:41:47.763 に答える