Найти по ассоциации (Datamapper) - PullRequest
2 голосов
/ 06 июля 2010

У меня есть две модели, которые выглядят так:

class Stage
    include DataMapper::Resource
    property :id, Serial
    belongs_to :staff
end

class Staff
  include DataMapper::Resource
  property :id, String, :key => true 
  property  :full_name, String 
  property  :email, String
  has n, :stages
end

Я пытаюсь найти все сцены, на которых назначен конкретный сотрудникЯ пробовал @stages = Stage.all(Stage.Staff => 'TM')

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 22 января 2011

На самом деле вы можете использовать строковые ключи в datamapper следующим образом:

Stage.all('staff.id' => 'TM')

или

Stage.all('staff.name.like' => 'Ted%')

Вы также можете смешивать и сопоставлять свойства этой модели:

Stage.all('staff.name.like' => 'Ted%', 'id.gte' => 5 )

Это позволит получить все этапы, принадлежащие людям, чьи имена начинаются с «Тед» и имеют идентификатор, больший или равный 5.

1 голос
/ 08 июля 2010

Попробуйте, это было давно, так как я использовал DataMapper.

Stage.all(Stage.staff.id => 'TM')

Предполагается, что «ТМ» фактически будет значением, которое вы используете для идентификатора сотрудника.

0 голосов
/ 06 июля 2010

Я бы сделал

@stages = Stage.all(:staff => 'TM')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...