Cześć,
Mam napisany backend (jsonapi-resources) i generuje mi takie zapytania dla jednego GET, co o tym sądzicie? Jest niedobrze? Może lepiej mniej inkludować, i zrobić więcej zapytań GET. Bo tutaj np.
Pierwsze pobieram wszystkie:
class UserFavoriteStream < ActiveRecord::Base
belongs_to :user
belongs_to :stream
end
potem jest include dla strumienia/kanału
class Stream < ActiveRecord::Base
has_many :posts, dependent: :destroy
has_many :forum_posts, dependent: :destroy
has_many :user_favorite_streams, dependent: :destroy
belongs_to :user
end
dodatkowo dokładam usera który utworzył strumień
class User < ActiveRecord::Base
has_many :forum_posts
has_many :user_favorite_streams
has_many :streams
has_many :user_favorite_posts
end
następnie pobieram wszystkie powiązane posty ze srumieniem
class Post < ActiveRecord::Base
belongs_to :stream
belongs_to :user
has_many :user_favorite_posts
end
i na końcu Usera który utworzył post
class User < ActiveRecord::Base
has_many :forum_posts
has_many :user_favorite_streams
has_many :streams
has_many :user_favorite_posts
end
Dodatkowo jeśli user przeszedł authenticate, to dla każdego postu sprawdzam czy dany post jest ulubiony czy nie:
class PostResource < JSONAPI::Resource
attributes ... :is_favorite
has_one :stream
has_one :user
has_many :user_favorite_posts
def is_favorite
if context[:current_user]
favorite = UserFavoritePost.where(user_id: context[:current_user].id, post_id:_model.id).first
if favorite
favorite.good
end
end
end
end
Tak to wygląda:
http://s10.postimg.org/3xts274op/Zrzut_ekranu_Deepin20160115150156.png