2011-01-16 1 views
0
class Task 
    include DataMapper::Resource 
    has 1, :list, :through => Resource 
end 

class List 
    include DataMapper::Resource 
    has n, :tasks, :through => Resource 
end 

목록에는 많은 작업이 있습니다. id = 1 인 작업이 있다고 가정합니다.DataMapper => 1 대 다수 필터

이 작업이있는 목록을 찾으려면 어떻게해야합니까?

나는 시도했다 : List.first (: tasks => task)하지만 항상 nil을 반환한다.

감사합니다.

답변

1
을 간단하지만

어떨까요? Task.first(:id => 1).list? 그건 그렇고, 당신은 모델의 정의를 정말로 바꿔야합니다. datama 문서 thoroughly을 읽어 보시기 바랍니다.

class Task 
    include DataMapper::Resource 

    belongs_to :list 
end 

class List 
    include DataMapper::Resource 

    has n, :tasks 
end 

더 멋지게 보이지 않습니까? 오, 당신이 키를 정의했으면 좋겠어요. 이것은 잘 작동하는 협회에 중요합니다. idTask의 키이면 Task.get(1).list으로 간단 해집니다.

0

는이 같은 중첩 된 상태로 사용 할 수 있습니다

List.first(:tasks => { :id => task.id }) 

을하지만, 왜 자원을 가지고 일을해야합니까 task.list

0

를 사용하는 것이 더 간단 할 것이다 작업을 주어진? 나는 Task.belongs_to 할 것 : 목록 n은 다음 List.has을 : 작업을 당신이 쓸 수 있도록 :

List.first :"tasks.id" => task.id 

이미 다음 작업을 가지고 있다면 그것은 단지 task.list 작성 :