2016-11-23 17 views
0

私はモデルとテーブルをデータベースに持っています(MySQL)。両方の表に共通の列があります。モデルとテーブルのデータをレールに取り込みます

ActiveRecord::Base.connection.execute sql 
    where 
    sql = "select table_1.common_column, table_1.column_1, table_1.column_2, table_2.column_1, table_2.column_1" 

これは、各配列に5つの列を持つ配列の配列として結果を返します。

すべての配列が[common_column, table_1.column_1, table_1.column_2, table_2.column_1, table_2.column_1]のように同じ順序でデータを持つことになりますので、私は2つの質問

  1. がありますか?

  2. 有効な方法はありますか?

答えて

0

あなたはcommon_columnことにより、2つのテーブルを結合し、表の列をindetifyするために選択し使用することができます。私の例では、私はあなたが別のオプションより詳細で、別名コラム

select('questions.description as q_desc, answers.description as ans_desc') 
0

することができquestionsselectjobs共通の列を持つテーブルuser_id

ActiveRecord::Base.connection.select_all(
    Question. 
    joins('INNER JOIN answers ON questions.asker_id = answers.answerer_id'). 
    select('questions.*, answers.*')) 

をしましたincludespreloadeager_loadメソッドを使用することです。ここはいいarticle about itです。使い方の

例:

Question.includes(:answers).find_each do |question| 
    do_something_with_question_columns(question.column_1, question.column_2, ...) 
    question.answers.each do |answer| 
    do_something_with_answer_columns(answer.column_2, answer.column_2, ...) 
    end 
end 
+0

しかし、これは右、モデル間の関連性がある場合にのみ動作しますか? –

+0

はい、これらのテーブルのモデルクラスはありますか? – mixan946

+0

モデルがありません。 ActiveRecord :: Base.connection.select_all(sql_query)は結果をカラム名のハッシュとして与えてくれました。 –

関連する問題