2014-12-27 4 views
0

У меня есть таблица пользователей, где пользователи могут быть «друзьями» друг с другом. Следующие отношения в user.rb и работает правильно:has_many и has_many через where where

has_many :friendships 
has_many :friends, through: :friendships 

Когда я бегу User.first.friendships или User.first.friends, все работает отлично.

Вот моя проблема ... Я добавил колонку в таблицу friendships под названием accepted_on. Я только хочу дружбы, где accepted_on не ноль. Я использовал следующий код, чтобы сделать это:

has_many :friendships, -> (object) { where.not(accepted_on: nil) } 
has_many :friends, through: :friendships 

Теперь, если я бегу User.first.friendships, все работает по плану. Если я запустил User.first.friends, я получаю следующее сообщение об ошибке: ArgumentError: wrong number of arguments (0 for 1)

Возможно ли это?

ответ

1

Вы не используете object в вашей ассоциации. Так почему бы не удалить его?

изменение

has_many :friendships, -> (object) { where.not(accepted_on: nil) } 

в

has_many :friendships,-> { where.not(accepted_on: nil) } 
Смежные вопросы