1

ユーザーがアルバムのレビューを投稿するレールアプリがあります。投稿されたレビューは「ピンズ」と呼ばれ、リリース日、アルバムタイトル、アーティスト名、アルバムジャケット画像、年間ランキングとともにアップロードされます。(今年の私の一番のお気に入りのアルバムのように) ピンはユーザーのものであり、ユーザーは多くのピンを持っています。私がやりたいことは、各ユーザーを表示する 2013 年の新しいページを作成し、アルバムの画像、タイトル、アーティストの降順リストをその年のトップ 10 リストとしてリストすることです。何かのようなもの:

<% @users.each do |user| %>
<%= link_to (image_tag user.image(:small)), user %> <%= user.name %>
<ol>   
  <li><%= @pin.album %> - <% @pin.artist%></li>     
    </ol>   
<% end %>

ピンを :date => "2013" のみに制限する必要があり、降順でリストする必要があります。

コントローラーとビューを理解するのに苦労しています。これまでのところ、私のページコントローラーは次のとおりです。

def tens2013
  @users = User.all
  @pin = Pin.where(:date => "2013")
end

<%= @pin.user.album %> を呼び出せるようにコントローラーを設定するにはどうすればよいですか?

4

2 に答える 2

1
  1. を呼び出す@pin.user.albumには、最初にモデル レベルで依存関係を定義する必要があります。したがって、Pinモデルには が必要belongs_to :usersであり、Userモデルには を含める必要がありますhas_many :pins。ここで、Pinモデルに というフィールドがありuser_id、これが外部キーになると仮定します。:includeこのような依存クラスにアクセスする場合にも、クエリで使用します。N+1 クエリの問題を回避します。例えば:

    @pin = Pin.includes(:users).where("date >= ?","2013-01-01") 
    
  2. 回答を 2013 年のみに制限するには、次のようにクエリを検索します。

    @pin = Pin.where("date >= ?","2013-01-01")
    
于 2013-10-13T16:01:42.607 に答える