所以我在写一个rspec测试。它将测试模型是否正确复制。所以规格是这样的:
it "should copy the data" do
@model = build(:model)
@another_model.copy_data(@model)
@model.data.should == @another_model.data
end
数据是一个嵌入的文档,所以当我这样做时,它是重复的。成功复制模型上的所有属性,减去id和created_at日期。我有办法做这种事吗?
@model.data.attributes.without(:_id, :created_at).should == @another_model.data.attributes.without(:_id, :created_at)
或者反过来,我选择所有其他字段,而不选择id和created_at?
谢谢你,谢谢
4条答案
按热度按时间7kqas0il1#
这工程
ddrv8njm2#
您可以这样做,因为
.attributes
返回一个Hash,其中每个键值对都是一个属性沿着其值。n8ghc7c13#
model.attribute_names.reject {|att| att if %w(id created_at updated_at).include?att }
这对我很有效
2sbarzqh4#
迟到了,但没有人建议:
看上去很干净。