2011-06-28 14 views
1

私はPHPからRailsに移行しようとしており、ベストプラクティスが何であるか不思議でした。私はMySQLで必要なすべてのデータを持っており、簡単なクエリを作成し、ActiveRecordsが提供する種類の細かい使い方を使って表示したいと考えています。私はMVCのパラダイムに精通しており、私のPHP知識に頼らざるを得ないようにしようとしていますが、例えば私が以前に使っていた種類のものをどうやってやり遂げることができるのでしょうか:Ruby on Rails3とMySQLクエリのベストプラクティス

$ query = mysql_query (既に選択されているテーブルからname = 'blah');

もし私が既にそのデータを持っていれば(既存のデータがなければ足場を生成することができます)、足場を作成しますか?そこに私のデータをインポートする?または私はRubyで生MySQLのクエリを記述しますか?

ありがとう!

答えて

1

まず、RailsはPHPのようなスクリプト言語ではなく、Web開発フレームワークです。 Rubyはスクリプト言語です。 PHPにはフレームワークもありますが、あなたはその違いを理解したかっただけです。

Railsの中で最も基本的で複雑なクエリは、ActiveRecordのメソッドとヘルパーによって処理されます。一般的にフレームワークに抽象化されているように、実際のSQLをはるかに少なく書くことができます。例えば

は、お使いのモデルの名前が市であると仮定すると、Railsのでクエリの同等は次のようになります。

City.find_all_by_name('blah') 

このしくみを教えてください。 Railsでモデルを作成する場合、通常はActiveRecord :: Baseをサブクラス化します。そのクラスに組み込まれているのは、データテーブルを調べて、テーブルのフィールドとフィールドの組み合わせごとに動的なファインダを構築する、多彩な機能です。

すでにすべてのデータを持っているので、すべての機能を有効にするために、従来のRailsの機能の一部をオーバーライドします。例えば、Railsでは、 "id"という名前のプライマリキーフィールドがあると仮定しています。また、Railsは、テーブルがモデルクラスの定義が何であっても、複数形として名前が付けられていることを前提としています。これらのことはすべて慣例によってデフォルトになりますが、上書きすることはできます。あなたが最初から構築していて慣習に従っているならば、これはすべて当然のこととして起こります。

あなたの質問に基づいて、Railsと標準のPHPとの主な違いをスピードアップするために、いくつかの基本的なRailsの読書資料とActiveRecordとRailsモデルに関するいくつかの具体的な情報に時間を費やす必要があると思います応用。初めからそれをまっすぐにしないと、多くのPHPスタイルのRailsが構築され、RailsとRubyが提供するものを十分に活用することはできません。結局、あなたは "私は何のためにそれをやったのか、それはまったく同じです。「

場合は、代わりに、あなたはRubyとRailsが多くを提供することを見つける、物事のレールウェイから起動しよう。

+0

だから、足場を実行して、/インポートを修正するのが最善だろうデータがRailsモデルに合うようにしますか? – Rio

+0

時間があり、努力したいと思っているなら、あなたはその方法で "Rails Way"にフィッティングすることで最も効果的だと思います。そうするべきですが、@sosbornは以下のように言いますと、Railsが提供するメリットを最大限に生かすことができます。 – Yardboy

0

あなたは、あなたがHARを持ってしようとしている既存のデータベースを使用している場合dはRailsにそれをうまくプレイさせる時間を与えます。 Railsのパワー(弱点と呼ぶかもしれません)は、設定よりも慣習に有利だということです。言い換えれば、実際には、データベース列が特定の方法で構造化されることが期待されます。大会から離れ、最初にRailsを使用する理由がすべて失われます。

新しいレールプロジェクトを開始し、移行レールを使用するときは、構造が期待どおりであることを確認してください。

古いプロジェクトをレールに移動する場合は、そのデータをレール作成のDBにインポートする機能を作成することを強くお勧めします。これにより、長期的には心苦しくなることがなくなり、Railsの強みをフルに活用することができます。