Datamapper «принадлежит_то / имеет п» игнорирование: требуется => ложь - PullRequest
1 голос
/ 28 ноября 2011

Я недавно унаследовал старое приложение merb, которое использует datamapper в качестве своей формы.Я не слишком знаком с DM, так что, возможно, есть что-то очевидное, что я пропускаю.У меня есть простые отношения между двумя моделями, которые не требуются, а именно:

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

Но по какой-то причине я не могу сохранить пользователя без прикрепленной загрузки:

> u = User.create :name => 'foo'
 => #<User @id=nil @name=nil @upload_id=nil>
> s.errors.full_messages
 => ["Upload must not be blank"]

Просто чтобы убедиться, что я попытался установить: required => false и на стороне "has n", но это, конечно, не имело никакого значения.

Все это на merb 1.0.13 и datamapper 0.10.1


РЕДАКТИРОВАТЬ: приведенный ниже ответ является правильным, но я нашел обходной путь, вы можете добавить: nullable => true, чтобы сделать эту работу, следующим образом:

belongs_to :upload, :required => false, :nullable => true

1 Ответ

2 голосов
/ 28 ноября 2011

Раньше в старой DM была ошибка, которая вызывала такое поведение. Я настоятельно рекомендую портировать это приложение на последние Rails & DM.

...