Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证与MongoMapper的关联_Ruby On Rails_Ruby_Ruby On Rails 3_Mongomapper - Fatal编程技术网

Ruby on rails 验证与MongoMapper的关联

Ruby on rails 验证与MongoMapper的关联,ruby-on-rails,ruby,ruby-on-rails-3,mongomapper,Ruby On Rails,Ruby,Ruby On Rails 3,Mongomapper,型号: 在控制器中: class User include MongoMapper::Document many :properties validates_associated :properties ... end class Property include MongoMapper::Document belongs_to :user many :services validates_associated :services ... end clas

型号:

在控制器中:

class User
  include MongoMapper::Document
  many :properties
  validates_associated :properties
  ...
end

class Property
  include MongoMapper::Document
  belongs_to :user
  many :services
  validates_associated :services
  ...
end

class Service
  include MongoMapper::Document
  belongs_to :property
  ...
end
似乎它没有使用当前的_user.save方法验证属性模型。
为什么?(

在MongoMapper中,分配一个非嵌入式多关联会自动保存您正在关联的记录。但是,如果其中任何记录无效,它们不会以静默方式保存到数据库中。下次您请求关联时,MongoMapper将转到数据库,但什么也找不到。您分配的无效记录将消失

@property.save #returns false and true as expected
current_user.save #returns always true why?
您可以使用
build
方法将对象添加到关联中,而无需保存

user = User.new(:properties => [Property.new])
user.properties  # => []
user.valid?      # => true
user=user.new
user.properties.build
user.properties#=>[#]
user.valid?#=>false

我认为关联保存是蒙哥马普的弱点之一。然而,这不是一个简单的问题。请参阅讨论这些挑战。

< P>在MongoMapper中,分配一个非嵌入的多个关联会自动保存您所关联的记录。但是如果这些记录中的任何一个无效,它们就不会被保存到数据库中。e、 下次您请求关联时,MongoMapper将转到数据库,但什么也找不到。您分配的无效记录将消失

@property.save #returns false and true as expected
current_user.save #returns always true why?
您可以使用
build
方法将对象添加到关联中,而无需保存

user = User.new(:properties => [Property.new])
user.properties  # => []
user.valid?      # => true
user=user.new
user.properties.build
user.properties#=>[#]
user.valid?#=>false

我认为关联保存是蒙哥马普的弱点之一。然而,这不是一个简单的问题。请参阅对这些挑战的讨论。

在我简短的测试中,ValueStaseAssociation < /C> >只适用于嵌入式关联。我正在调查,因为代码中还不清楚为什么会这样。在我简短的测试中,验证_关联的只对嵌入的关联有效。我正在调查,因为代码中没有立即明确这是为什么。