我在Rails(3)中的ActiveRecord对象上有一个关系,并且AR有点生疏我不完全确定为什么我不能查询它。
我有一个deadline
,其中包含了一些其他位和日期的日期。
我有一个Task
belongs_to
一个deadline
。 Task
也有:by_deadline
范围,如果我直接使用Task.by_deadline( deadline )
查询,则该范围有效。看起来有点像这样:
scope :by_deadline, lambda{ |deadline| where("deadline_id = ?", deadline.id ) }
我有Channel
has_many
个任务。
我希望能够找到属于特定截止日期的Tasks
上的所有Channel
。我目前正在规范测试环境中工作。
这有效:
result = []
@channel.tasks.each do |task|
result << task if task.deadline_id = @deadline.id
end
我完全得到了我的期望。
然而,我很困惑为什么我不能使用像:
@channel.tasks.by_deadline @deadline
如果不是那样:
@channel.tasks.find( :deadline => @deadline )
或者至少:
@channel.tasks.find( :deadline_id=> @deadline.id )
甚至:
@channel.tasks.find_by_deadline( @deadline )
看起来他们应该做点什么,但是在我的测试中没有任何返回,当在上面的块旁边调用时,它工作正常。
我猜这与ActiveRecord进入数据库而不是使用内存中的集合有关,但是我需要确保它有效还是我完全误解了关系应该如何表现?< / p>