2011年8月26日金曜日

RailsのactiveRecordのfindメッソドで複数テーブル(Join)からクエリー

fund(1)<------>(*)fund_ranking
fundとfund_rankingは一対多の関係です。キーはfund_rankingsテーブルのfund_id
まずはmodelsでそれぞれ関係を作りましょう
fund.rbに追加
has_many :fund_rankings #ここは複数形
fund_ranking.rbに追加
belongs_to :fund #ここは単数形
ここで単数複数を間違うとActiveRecord::ConfigurationError と怒られる
コントローラー側 fund/ranking_controller.rb
@pcipu1m = FundRanking.find :all,
               :conditions => ["yyyymm = ? and period = '1m'", @yyyymm.yyyymm],
               :include => [:fund], #ここでfundsテーブルをインクルード
               :order => "rank asc",
               :limit => 10
ビュー側 fund/ranking/index.rhtml
<%- if @pcipu1m.size > 0 -%>
<%- @pcipu1m.each_with_index do |rank, idx| -%>
    第<%= rank.rank %>位 #fund_rankingsのrank
    銘柄名:<%= rank.fund.name %> #fundsのname
<%- end -%>
<%- end -%>
まぁ、私みたいなror超初心者の参考のために(。・ω・。)





0 件のコメント:

コメントを投稿