Ruby on rails 活动\u模型\u序列化程序,包括,以及序列化程序查询数据的原因?
使用API时,我习惯于: 执行一些数据库查询 选择我在响应中需要的数据 序列化数据,并将其发送到客户端 现在,使用活动的_model _序列化程序,我假设 渲染json:artist,包括:“轨迹” 如果我的艺术家有一些曲目,include:“tracks”部分将对曲目进行序列化 但显然,它也会为我从db中提取曲目Ruby on rails 活动\u模型\u序列化程序,包括,以及序列化程序查询数据的原因?,ruby-on-rails,ruby,active-model-serializers,json-api,Ruby On Rails,Ruby,Active Model Serializers,Json Api,使用API时,我习惯于: 执行一些数据库查询 选择我在响应中需要的数据 序列化数据,并将其发送到客户端 现在,使用活动的_model _序列化程序,我假设 渲染json:artist,包括:“轨迹” 如果我的艺术家有一些曲目,include:“tracks”部分将对曲目进行序列化 但显然,它也会为我从db中提取曲目 这是正常的行为吗?序列化程序应该进行数据库查询吗?是的,要包含关联,必须首先从数据库中获取它。否则,如何将其包含在响应中 看 关联由其相应的方法调用。在您的示例中,这将是Artist
这是正常的行为吗?序列化程序应该进行数据库查询吗?是的,要包含关联,必须首先从数据库中获取它。否则,如何将其包含在响应中 看 关联由其相应的方法调用。在您的示例中,这将是Artisttracks。看。这意味着,如果在调用序列化程序之前加载关联,它将不会调用数据库 例如:
artist = Artist.first # <= artists table gets queried
artist.tracks.load # <= tracks table gets queried
render json: artist, include: :tracks # <= no queries
好的,那么在rails中:serialalize=serialize+从db查询缺少的数据,对吗?是的。唯一的选择是:1。引发由于缺少数据而无法呈现的错误。2.在相关对象上设置一个错误,并像ActiveRecord::Base一样返回false作为结果。但我的答案中的实现是Rails开发人员的目标。