2013-04-23 4 views
2

В моей модели у меня есть:Rails 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>] 

Am-I мили что-то?

EDIT: С одной стороны, у вас есть этот запрос:

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' 
=> [] 
+0

Вы можете проверить соответствующие запросы в журнале. Ваша область применения находится на модели друга, и вы используете ее с пользовательской моделью. – Rubyman

+0

Пожалуйста, перезапустите сеанс консоли и разместите здесь свои журналы. – Simpleton

+0

перезагрузите консоль следующей командой 'reload!' – sameera207

ответ

0

С: поле статуса находится в модели Friend, вам может потребоваться изменить область действия на это

scope: approved_friend, где ('friends.appro ved '=> true) .includes (: friend)

+0

Сфера применения находится в friend.rb, это необязательно делать (хотя, я ее протестировал. То же самое). – zakelfassi

Смежные вопросы