Mongoid validates_presence_of belongs_to项目

时间:2014-01-20 02:58:17

标签: ruby activerecord mongoid

如何验证定义为belongs_to的项目的存在?换句话说:

class Temp
  include Mongoid::Document
  include Mongoid::Timestamps
  belongs_to :user
end

我希望确保用户输入。

提前致谢!

1 个答案:

答案 0 :(得分:2)

来自fine manual

  

关系的父文档应该使用has_many宏来指示 n 引用的子项数,其中引用的文档使用belongs_to

class Band
  include Mongoid::Document
  has_many :members
end

class Member
  include Mongoid::Document
  field :name, type: String
  belongs_to :band
end
     

[...]

# The parent band document.
{ "_id" : ObjectId("4d3ed089fb60ab534684b7e9") }

# The child member document.
{
  "_id" : ObjectId("4d3ed089fb60ab534684b7f1"),
  "band_id" : ObjectId("4d3ed089fb60ab534684b7e9")
}

记下代表band_id关系的belongs_to :band。所以说:

belongs_to :user

隐式向field :user_id添加Temp。这意味着你可以简单地说:

validates_presence_of :user_id

确保已提供:user_id。如果您想确保:user_id有效,那么您可以:

validates_presence_of :user

并且验证将确保temp.user(即User.find(temp.user_id))找到某些内容。