Rails ActiveRecord:范围不连贯

时间:2013-04-23 10:38:05

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

在我的模特中,我有:

#models/friend.rb
scope :approved_friend, where(:approved => true)

Rails控制台输出:

User.find(2).friends
 => [#<Friend id: 18, user_id: 2, approved: true, created_at: "2013-04-23 09:18:59", updated_at: "2013-04-23 09:18:59", friend_id: 1>] 

User.find(2).friends.approved_friend
=> [] 

请注意,在输出中已批准为真... 在哪里疯狂就在这里:

User.find(1).friends.approved_friend
=> [#<Friend id: 19, user_id: 1, approved: true, created_at: "2013-04-23 09:19:36", updated_at: "2013-04-23 09:19:36", friend_id: 2>] 

我错过了什么?

编辑: 一方面你有这个问题:

SELECT "friends".* FROM "friends" WHERE "friends"."user_id" = 2

 => [#<Friend id: 18, user_id: 2, approved: true, created_at: "2013-04-23 09:18:59", updated_at: "2013-04-23 09:18:59", friend_id: 1>] 

另一方面,你有这个(通过范围查询):

SELECT "friends".* FROM "friends" WHERE "friends"."user_id" = 2 AND "friends"."approved" = 't'
 => []

1 个答案:

答案 0 :(得分:0)

由于:status字段位于Friend模型中,因此您可能需要将范围更改为此

范围:approved_friend,其中('friends.approved'=&gt; true).includes(:friend)