我有一个名为Events
的模型。该模型基本上是其他3个模型的连接表:
Events.column_names
=> ["id", "performer_id", "location_id", "date"]
在我的应用程序中,我还使用了act_as_follower gem,这有助于用户对不同模型的追随。为此,它会创建一个包含以下列的Follow表:
Follow.column_names
=> ["id", "followable_id", "followable_type", "follower_id", "follower_type", "blocked", "created_at", "updated_at"]
在我的Events
控制器中,我想要获取所有事件的列表,performer_id
是表演者,然后是current_user
。我该怎么做?
我没有运气就尝试了以下内容:
book.followed_by?(user)
返回true或false,但我没有
能够使它在查询中工作。任何帮助表示赞赏!
型号:
class Event < ActiveRecord::Base
belongs_to :performer
belongs_to :location
acts_as_followable
end
class Performer < ActiveRecord::Base
has_many :event
has_many :location, through: :event
acts_as_followable
end
答案 0 :(得分:1)
也许是这样的:
Event.where(performer: Performer.followed_by(current_user))
我没有使用acts_as_follower
宝石,所以我在猜测。
如果acts_as_follower
不支持.followed_by
类方法,那么可能会自己动手:
class Performer < ActiveRecord::Base
class << self
def followed_by(thing)
where(id: Follow.where(followable_type: 'Performer', follower: thing).pluck(:followable_id))
end
end
end
顺便说一句,我认为Performer
看起来更像是:
class Performer < ActiveRecord::Base
has_many :events
has_many :locations, through: :events
acts_as_followable
end
请注意:events
和:locations
的复数形式。