2012年3月1日木曜日

railsコンソールでモデルのfindメソッドで関節的に関係を持つデーブルへのアクセス

3つのテーブルそれそれ下記の関係

tmp_fund_index ○----● fund ●----○ fund_ranking

#models/fund.rb
class Fund < ActiveRecord::Base
  has_many :fund_rankings
end

#models/fund_ranking.rb
class FundRanking < ActiveRecord::Base
  belongs_to :fund
end

#models/tmp_fund_index.rb
class TmpFundIndex < ActiveRecord::Base
  belongs_to :fund
end
まずコンソールで確認すると、出ました $ ruby script/console Loading development environment.
>> FundRanking.find(:all, :limit => 1, :include => [:fund => [:tmp_fund_index]])
コントローラでは
#controllers/fund/ranking_controller.rb
  @rank_dtl = FundRanking.find :all,
                               :include => [{:fund => :tmp_fund_index}],

ビューアーでは、こうやって参照できる
#views/fund/ranking/detail.rhtml
<%- if @rank_dtl -%>
  <%- @rank_dtl.each_with_index do |rank, idx| -%>
    <%= rank.fund.tmp_fund_index.standard_price %>
  <%- end -%>
<%- end -%>

0 件のコメント:

コメントを投稿