【问题标题】:Rails: ActiveRecord: How to extract records with associations and render as jsonRails:ActiveRecord:如何提取具有关联的记录并呈现为 json
【发布时间】:2015-06-25 09:28:49
【问题描述】:

我有三个模型。

  • 住宿
  • 住宿类型
  • 位置

AccommodationType 有很多Accommodations

Location 有很多 Accommodations

Accommodation 属于AccommodationLocation

我想将AccommodationsAccommodationTypeLocation 一起渲染为json 的一部分。

我尝试过的是-

第一个

return_obj = {}
return_obj[:error] = false

accommodations = Accommodation.all.includes(:location, :accommodation_type)
return_obj[:accommodations] = accommodations

render :json => return_obj and return
# it does not include location and accommodation_type in json

第二

return_obj = {}
return_obj[:error] = false

accommodations = Accommodation.includes(:location, :accommodation_type).all
return_obj[:accommodations] = accommodations

render :json => return_obj and return
# same results as above

我知道我可以得到它

accommodations = Accommodation.all
render :json => accommodations.to_json(:include => [:location, :accommodation_type]) and return

但是,我需要让accommodations 成为return_obj 的一部分。

【问题讨论】:

    标签: ruby-on-rails json activerecord


    【解决方案1】:

    以下应该有效:

    render :json => Accommodation.all.to_json(:include => [:location, :accommodation_type]) }
    

    【讨论】:

    • 是的。我知道它有效。我想将住宿放入 return_obj 并将 return_obj 呈现为 json。请在我的问题末尾查看。
    【解决方案2】:

    我找到了一个解决方案,但不确定它是否是最好的。

    return_obj = {}
    return_obj[:error] = false
    accommodations = Accommodation.all
    return_obj[:accommodations] = JSON.parse(accommodations.to_json(:include => [:location, :accommodation_type]))
    render :json => return_obj and return
    

    如果您有更好的解决方案给出相同的结果,请告诉我。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2019-05-24
      相关资源
      最近更新 更多