【问题标题】:Rails rabl - returning ALL attributes, not just named onesRails rabl - 返回所有属性,而不仅仅是命名的
【发布时间】:2012-12-06 20:10:40
【问题描述】:

Rabl 允许您通过在视图中命名属性来获取属性,例如:

object @user
attributes :name, :email

我有一个模型,其属性未知,但我想使用 rabl 在我的实例变量中显示从控制器返回的所有内容。

有没有类似的快捷方式:

attributes :all

等等

谢谢

【问题讨论】:

  • 我写这篇文章已经有一段时间了,但对于未来的读者来说,github.com/rails/jbuilder 很棒,易于使用,并且允许非常快速和轻松地构建 json 对象。

标签: ruby-on-rails json rabl


【解决方案1】:

你应该可以使用.column_names:

attributes *User.column_names

【讨论】:

  • 这是我能找到的唯一答案。
  • 嗯,我似乎无法在用户模型的实例上调用列名。我可以在控制台中的 User 模型上调用 column_names,但不能在模型的特定实例上调用。
  • 你是对的,这是一个类方法 - 已修复。或者,如果您不能确定模型类,您可以致电.class*@user.class.column_names
  • 这适用于 ActiveRecord::Base 的后代,但是如果您将不同的对象传递到您的 RABL 模板中怎么办,例如 OpenStruct?
  • 对于 OpenStruct 使用 attributes *@user.instance_variable_get("@table").keys。任何数据模型都应该有一种方法可以让您获取所有数据属性的列表 - 您可能只需要挖掘一下就可以找到它们。然后相应地应用解决方案。
【解决方案2】:

如果您想删除某些列,例如“created_at”和“updated_at”:

attributes *User.column_names - ["created_at", "updated_at"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多