Я хотел бы создать ленту с микросообщениями:
Сначала я собираю все микропосты от своих подписчиков с visible_for 'following'
following_ids_subselect = "SELECT followed_id FROM relationships
WHERE follower_id = :user_id"
following_feed = Micropost.where("visible_for = 'following'
AND user_id IN (#{following_ids_subselect})", user_id: id)
Затем я собираю все микросообщения из моих подписчиков (И статус «контакт») с visible_for 'contact'
contacts_ids_subselect = "SELECT followed_id FROM relationships
WHERE follower_id = :user_id
AND status = 'contact'"
contacts_feed = Micropost.where("visible_for = 'contacts'
AND user_id IN (#{contacts_ids_subselect})", user_id: id)
Есть ли способ собрать following_feed
и contacts_feed
вместе? что я могу написать:
@feed_items = global_feed.paginate(page: params[:page])
Другими словами: global_feed
должен содержать все микросообщения от пользователей, за которыми следит текущий пользователь, с visible_for 'followers'
+ все микросообщения от пользователей, за которыми следит текущий пользователь, с status 'contact'
с visible_for 'contacts'
Обновлять:
Отношение
class Relationship < ApplicationRecord
# Table name: relationships
#
# id :integer(4) not null, primary key
# follower_id :integer(4)
# followed_id :integer(4)
# status :string
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
end
Пользователь
class User < ApplicationRecord
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :followers, through: :passive_relationships, source: :follower
(..)
end
Микропост
class Micropost < ApplicationRecord
#
# Table name: microposts
#
# id :integer(4) not null, primary key
# user_id :integer(4)
# content :string
# visible_for :string
belongs_to :user
default_scope -> { order('created_at DESC') }
end
contact_ids_subselect
в запросе las SQL должно бытьfollowing_ids_subselect
? - person NickGnd   schedule 09.06.2016.paginate
метод? Можно ли его применить к перечисляемым объектам? - person NickGnd   schedule 09.06.2016