Монговидный стиль Twitter следующий, не может указывать критерии / условия для массива отношений
-
28-09-2019 - |
Вопрос
Я в конце моего змея, пытаясь справиться с этими ошибками. По сути, я создал следующие шаблоны пользователей и отношений, используя Mongoid для обработки моей базы данных. Это кажется ближней углеродной копией примера в нижней части страницы здесь. Отказ Я пытаюсь позвонить любому из следующих действий:
user1.relationships.find(:all, :conditions => {:rel_user => user_in_question, :rel_type => "following" })
user1.relationships.all(:conditions => {:rel_user => user_in_question, :rel_type => "following" })
user1.relationships.where(:rel_type => "following")
user1.relationships.following #with a named scope
Это, кажется, просто вернут весь массив отношений; Они не ищут критериями. Метод FACE () также выбрасывает ошибку, говорящую, что она может принимать только 1 аргумент. Im_following? Метод всегда возвращает true.
Я не уверен, лучше ли разместить код в строке или от гек или от того, поэтому вот как цики:
user.rb.
user_follow_spec.rb.
отношение .rb.
Буду признателен за любую помощь.
Решение
Rockmanioff, я также столкнулся с той же проблемой. Вы можете посмотреть на это также. Монгоиды планы на поддержку этой функции на их версии отпуска. На данный момент мы должны делать вещи вручную.
class User
include Mongoid::Document
include Mongoid::Timestamps
references_many :fans, :stored_as => :array, :class_name => 'User', :inverse_of => :fan_of
references_many :fan_of, :stored_as => :array, :class_name => 'User', :inverse_of => :fans
def become_fan_of user
fan_of << user
self.save
user.fans << self
user.save
end
def is_a_fan? user
fan_of_ids.include? user.id
end
def unfan user
fan_of_ids.delete user.id
self.save
user.fan_ids.delete self.id
user.save
end
...
end
В консоли вы можете сделать:
User.first.become_fan_of User.last
User.first.is_a_fan? User.last
User.first.unfan User.last
В вашем случае вы можете заменить «вентилятор / файл_OF» для «подписчиков / следующих соответственно». Надеюсь это поможет.
Другие советы
Я советую вам упростить ваши отношения, используя самообладанные ассоциации. Проверьте мой ответ на этот вопрос:
Как: пользователь имеет фанаты
Я думаю, что это довольно близко к ассоциации, которую вы хотите:
class User
include Mongoid::Document
references_many :following,
:class_name => 'User',
:stored_as => :array,
:inverse_of => :followed_by
references_many :followed_by,
:class_name => 'User',
:stored_as => :array,
:inverse_of => :following
end
# let's say we have users: al, ed, sports_star, movie_star
sports_star.followed_by << al
movie_star.followed_by << al
sports_star.followed_by << ed
movie_star.followed_by << ed
movie_star.followed_by # => al, ed
al.following # => sports_star, movie_star
Попробуй это:
class User
# follows and followers
references_many :follows, :stored_as => :array , :inverse_of => :followers ,:class_name=>"User"
references_many :followers, :stored_as => :array , :inverse_of => :follows ,:class_name=>"User"
def followers
followers.map
end
end