J'ai récemment hérité d'une ancienne application merb qui utilise datamapper comme son orm. Je ne suis pas trop familliar avec DM donc il y a probablement quelque chose d'évident que je néglige. J'ai une relation simple entre deux modèles, qui ne sont pas requis, comme suit:Datamapper 'appartient à/N'a pas ignoré: required => false
class User
include DataMapper::Resource
property :id, Serial
property :name, String, :length => 100, :nullable => false
belongs_to :upload, :required => false
end
class Upload
include DataMapper::Resource
property :id, Serial
property :filename, String
has n, :users
end
Mais pour une raison quelconque, il ne me laisse pas enregistrer un utilisateur sans téléchargement ci-joint:
> u = User.create :name => 'foo'
=> #<User @id=nil @name=nil @upload_id=nil>
> s.errors.full_messages
=> ["Upload must not be blank"]
Juste pour être sûr que j'ai essayé le réglage: required => false sur le côté "has n" aussi, mais cela ne faisait aucune différence bien sur.
Tout cela sur merb 1.0.13 et DataMapper 0.10.1
EDIT: La réponse ci-dessous est correct, mais je ne trouve une solution de contournement, vous pouvez ajouter: annulable => true pour faire ce travail, comme suit:
belongs_to :upload, :required => false, :nullable => true
Merci pour le heads up. J'avais peur de ça.. –