embeds_many有条件?

时间:2013-05-30 04:33:33

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

如果字段具有特定值,我该如何embeds_many?例如。让我们假设一个家庭成员可以有一辆或多辆汽车if他们年龄大于或等于18岁。

class FamilyMember
  include Mongoid::Document

  # Psuedo code
  embeds_many :cars, :if :age >= 18

  field :member_type, :type => String # can be dad, mom, son, daughter
  field :age, :type => Integer
end

这样的事情是可能的,还是我必须通过其他方式。即验证?

3 个答案:

答案 0 :(得分:2)

尝试此操作并查看here以获取更多信息

embeds_many :cars do
    def with_age(age=18)
      where(age: age)
    end
end

然后您必须使用此类family_member.cars.with_age(18)family_member.cars.with_age,然后您可以根据需要修改条件。

答案 1 :(得分:0)

在活动记录中你可以做到

has_many :cars, :conditions => ['age >= ?', 18]

虽然我没有在mongoid中尝试过它。

答案 2 :(得分:0)

embeds_many :cars, :if => :check_age

def check_age
  return true if self.age >= 18
end