将关联数据传递给角度视图

时间:2015-09-14 16:54:18

标签: angularjs ruby-on-rails-4

在角度视图中,我想显示模型的所有实例以及来自该模型关联模型的一些字段。提名belongs_to用户和用户has_many提名。用户有一个存档的布尔属性,我需要将其传递给角度视图。以下是提名数据目前如何传递给角度应用程序。

api - nominations_controller

def index
  render json: Nomination.all
end

对于每个提名,我想包括提名所属的用户的存档属性。在rails视图中,我可以通过Nomination.first.user.archived访问该属性。如何将该属性作为json数据的一部分传递?我试过了

def index
  render json: User.includes(:nominations).where.not(nominations: {user_id: nil})
end 

它为我提供了我想要的用户和归档属性以及所有其他关联,例如团队,但它没有通过提名。

2 个答案:

答案 0 :(得分:0)

您可以使用.includes()来包含父对象中的数据。类似的东西:

def index
  render json: Nomination.includes(:user)
end

http://apidock.com/rails/ActiveRecord/QueryMethods/includes

答案 1 :(得分:0)

原来api的创建者已经覆盖了User模型中的serializable_hash方法,所以我不得不为该方法添加提名。一旦我这样做,这就有效了。

def index
  render json: User.includes(:nominations).where.not(nominations: {user_id: nil})
end

我已经重构它以使用范围

def index
  render json: User.includes(:nominations).has_nominations
end

在user.rb

def self.has_nominations
  where.not(nominations: {user_id: nil})
end