【发布时间】:2017-02-14 19:20:46
【问题描述】:
假设我有以下课程:
class User < ActiveRecord::Base
has_many :addresses
end
我正在初始化以下记录:user = User.new(first_name: "John", last_name: "Doe", address_ids: [1, 2, 3])
Rails 已经提供了一种方便的方法来检索模型记录的属性:user.attributes # => {first_name: "John", last_name: "Doe"}
但是,我还需要得到一个包含address_ids 的哈希,即:
user.attributes_with_has_many_associations
# => {first_name: "John", last_name: "Doe", address_ids: [1, 2, 3]}
我正在寻找在任何给定记录上执行此操作的 通用 方法(即不涉及反映关联以提取属性并最终污染模型本身,毕竟我'我正在寻找一种纯粹出于测试目的的方法)或至少在测试代码中隔离一个方法。
【问题讨论】:
-
User.address_ids 不应该给你确切的信息吗?如果您已经将 ids 保存为数组,您可以像这样检索相同的,不是吗?
-
没有内置的方法可以做到这一点。只需手动添加您想要的关联,即
user.attributes.tap { |a| a[:address_ids] = a.address_ids }
标签: ruby-on-rails ruby ruby-on-rails-4 rspec ruby-on-rails-5