【问题标题】:Embedding foreign keys in Rails Active Model Serializer在 Rails Active Model Serializer 中嵌入外键
【发布时间】:2013-03-13 19:05:26
【问题描述】:

我知道在嵌入关联时我们可以做到以下几点

has_many :task_observer, embed: :objects


has_many :task_observer, embed: :ids

有没有办法在关联中嵌入除 id 之外的其他字段,例如 contact_id 或 task_name 作为数组而不是主键?请告诉我。

【问题讨论】:

  • 我不太确定你想要什么,但我喜欢为相关对象编写一个序列化程序。在您的情况下,这将是 TaskObserver 模型的序列化程序。然后 has_many 将使用此序列化程序来序列化所有模型。这使您可以完全控制要序列化的字段。但我不确定这是否是你要找的。​​span>
  • embed: :ids 给了我一个 task_observer id 的数组,像这样 task_observers: [ 22, 20, 18 ] 如果我为 TaskObserver 模型添加一个序列化程序并限制属性,我会得到这样的结果:task_observers :[{contact_id:22},{contact_id:20},{contact_id:18}]
  • 那不适合你?我的意思是,在我看来,在这里有哈希是个好主意,这样你就知道你正在使用什么样的 id。因为如果您只有简单的列表,那么它就失去了最初的目的。没有?

标签: ruby-on-rails activerecord active-model-serializers


【解决方案1】:

如果你会做类似的事情:

attributes :task_observer_contact_ids

def task_observer_contact_ids
  object.task_observers.map(&:contact_id)
end

这是你要找的吗?

【讨论】:

    【解决方案2】:

    embed_key 更好

    has_many :task_observer, embed: :ids, embed_key: :custom_id_field_name
    

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 2018-09-03
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多