包含/排除mongoid属性

时间:2013-04-26 11:45:33

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 mongoid

我有一个mongoid对象:

post = Post.first

当我尝试:

post.attributes.each do |a|
...
end

此块解析所有对象属性。

我只需解析3个属性。 post.attr1, post.attr2, post.attr3

3 个答案:

答案 0 :(得分:1)

whitelist = %w(attr attr2 attr3)
post.attributes.select{|el| whitelist.include?(el)}.each do |key, value|
   ...
end

像往常一样,试着抽象一下。

答案 1 :(得分:0)

post.attributes.except("id", "created_at", "updated_at").each do |attr| .... end

这也有帮助。

答案 2 :(得分:0)

您可以尝试使用only方法,该方法仅返回指定的属性(它还会添加"_id"字段),例如:

post = Post.only(:attr_1,:attr_2).first # This will give you something like => {"_id"=>"50cf2e893428ed5437000002", "attr_1"=>value, "attr_2"=>2012-12-21 02:00:00 UTC} 

post.attributes.each do |a|
  next if a.first == "_id" # each `a` is an array, for instance: ["_id", "50cf2e893428ed5437000002"]
  #do something with the attributes
end