按关联查找(Datamapper)

时间:2010-07-06 06:15:12

标签: ruby database datamapper relationship

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

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 个答案:

答案 0 :(得分:2)

实际上你可以在datamapper中使用字符串键,如下所示:

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

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

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

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

这将使所有Stages属于名称以'Ted'开头并且id大于或等于5的人。

答案 1 :(得分:1)

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

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

这假设'TM'实际上是您用于工作人员身份的值。

答案 2 :(得分:0)

我会做

@stages = Stage.all(:staff => 'TM')