为什么我不能查询我的ActiveRecord关系?

时间:2014-05-30 17:31:20

标签: ruby ruby-on-rails-3 activerecord rspec

我在Rails(3)中的ActiveRecord对象上有一个关系,并且AR有点生疏我不完全确定为什么我不能查询它。

我有一个deadline,其中包含了一些其他位和日期的日期。

我有一个Task belongs_to一个deadlineTask也有: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>

0 个答案:

没有答案