【问题标题】:Pass rails association data to angular view将rails关联数据传递给角度视图
【发布时间】:2015-09-14 16:54:18
【问题描述】:

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

api - 提名控制器

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 

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

【问题讨论】:

    标签: angularjs ruby-on-rails-4


    【解决方案1】:

    您可以使用.includes() 来包含来自父对象的数据。比如:

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

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

    【讨论】:

    • 感谢您的回复。我最初尝试过,但提名是用户的子模型。我已经更新了我的问题。
    • 看起来您下面的解决方案使用我的答案来完成它,请随时 +1
    【解决方案2】:

    原来 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
    

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 2019-11-01
      • 2016-04-14
      相关资源
      最近更新 更多