Datamapper - Найти каждого клиента по проекту - PullRequest
0 голосов
/ 09 августа 2010

Я хотел бы просмотреть каждый проект по клиенту, но не знаю, как использовать Datamapper для получения этой информации. У меня настроены мои отношения так:

class Client
    property :id, Serial
    property  :name, String
    has n, :projects, :foreign_key => "company_id"
end

class Project
  include DataMapper::Resource
  property :id, Serial
  property  :title, String
  belongs_to :company, "Client"
  has n, :stages
end

Я хотел бы вывести список вроде:

Клиент 1

  • Проект A
  • Проект B
  • Проект C

Клиент 2

  • Проект D
  • Проект E

Как лучше всего извлечь это из Datamapper и как будет выглядеть шаблон представления?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 августа 2010

DataMapper не имеет опции foreign_key. Это :child_key

Так что вам нужно изменить модель клиента

class Client
    property :id, Serial
    property  :name, String
    has n, :projects, 'Project', :child_key => [:company_id]
end

После того, как вы можете выполнить итерации по всему проекту клиентом

<% Client.all.each do |client| %>
<%= client.name %>
<ul>
  <% client.projects.each do |project| %>
  <li><%= project.title %></li>
  <% end %>
</ul>
<% end %>
1 голос
/ 09 августа 2010
# Find all clients (this should go in a controller of some kind)
@clients = Client.all # Maybe you want to order them here too

Посмотреть ...

<% @clients.each do |client| %>
<%= client.name %>
<ul>
  <% client.projects.each do |project| %>
  <li><%= project.title %></li>
  <% end %>
</ul>
<% end %>
...