我想在Active Model Serializer中使用pluck方法进行对象关联:
Post has_many :comments
有没有办法覆盖
has_many :comments
串口化程序中的在注释中使用pluck(:id,:title)?
答案 0 :(得分:1)
您可以使用带has_many的块来扩展与方法的关联。请参阅注释“使用块来扩展关联”here。
class Post < ActiveRecord::Base
has_many :comments do
def plucked()
select("id, title")
end
end
end
或其他方法,从同一个链接可以,从数据库中获取comments
时有自定义的SQL查询:
has_many :comments, :class_name => 'Comment', :finder_sql => %q(
SELECT id, title
FROM comments
WHERE post_id = #{id}
)
在导轨documentation中,它显示有一个选项:select
,也可以用于此目的。
答案 1 :(得分:0)
在这种情况下我通常会做什么,我有两个不同的序列化器CommentSerializer
和CommentInfoSerializer
。因此CommentInfoSerializer
仅包括我想在其父资源的嵌入属性中响应的最小属性。
class CommentSerializer < ActiveModel::Serializer
attributes :id, :title, :body
end
class CommentInfoSerializer < ActiveModel::Serializer
attributes :id, :title
end
class PostSerializer < ActiveModel::Serializer
has_many :comments, serializer: CommentInfoSerializer
end