、User
、List
およびTask
モデルがあります。
タスク belongs_to
ユーザーとリスト、リスト has_many
タスクとbelongs_to
ユーザー、およびユーザー has_many
リストとhas_many
タスク。
表示したいものの一部がインデックス ビューで動作しており、ハングアップしているスナフが 1 つだけあります。
最初に作成したタスクをすべてのリストのインデックス ビューに表示できます。問題は、リストがタスクに関連付けられていない場合でも、作成された最初のタスクがすべてのリストに対して表示されることです。
リスト インデックス ビューでは、作成された最初のタスクがリストに関連付けられている場合にのみ表示されるようにします。
タスク モデル:
class Task < ActiveRecord::Base
attr_accessible :completed, :description, :list_id, :user_id
belongs_to :list
belongs_to :user
scope :completed, where(:completed => true)
scope :incomplete, where(:completed => false)
def self.most_recent
first(:order => 'id ASC' ) # or whatever query you need to get the most recent
end
end
リスト インデックス ビュー-
<div class="span12 offset2">
<% @lists.each do |list| %>
<div class="well row span4">
<div class="span3">
</div>
<div class="span4">
<span class="lead">
<%= link_to "#{list.name}", list_url(list) %>
</span>
<p>
<%= list.description %>
</p><hr>
<div class="pull-right" id="gage-<%= list.id %>" style="width:170px; height:100px;"></div>
<br>
<span class="offset1">
<% if Task.most_recent %>
<span class="pull-left"> <%= image_tag Task.most_recent.user.gravatar_url, :class => "gravatar_index" %></span>
<% end %>
</span>
</div>
<% end %>
</div>
私はまだレールに慣れていませんが、非常に近いことを知っています。私はここで何を見落としていますか?強調されたテキスト
===========
編集
@Baldrickのソリューションをテストしましたが、別のエラーが発生しているようです
説明された解決策に関する私の見解-
<% if Task.most_recent(list) %>
<span class="pull-left"> <%= image_tag Task.most_recent.user.gravatar_url, :class => "gravatar_index" %></span>
<% end %>
私は今、エラーが発生しています -
SQLite3::SQLException: no such column: tasks.list: SELECT "tasks".* FROM "tasks" WHERE "tasks"."list" = 4 ORDER BY id ASC LIMIT 1
タスクモデルを作成したときにこのような列が作成されたので、正しく理解していないに違いありません
class CreateTasks < ActiveRecord::Migration
def change
create_table :tasks do |t|
t.string :description
t.boolean :completed, :default => false
t.integer :list_id
t.timestamps
end
end
end
これは、クエリを作成できるようにするためにインデックスを追加する必要がある場合ですか?