2

我有两个看起来像这样的模型

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')

我究竟做错了什么?

4

3 回答 3

2

实际上,您可以像这样在 datamapper 中使用字符串键:

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

或者

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

您也可以混合和匹配该模型中的属性:

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

这将获得属于名称以“Ted”开头且 id 大于或等于 5 的人的所有阶段。

于 2011-01-21T21:16:41.670 回答
1

试试这个,自从我使用 DataMapper 已经有一段时间了。

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

这是假设“TM”实际上是您用于员工 id 的值。

于 2010-07-08T10:08:13.723 回答
0

我会做

@stages = Stage.all(:staff => 'TM')
于 2010-07-06T06:43:41.667 回答