Синатра и ассоциация пост-картографов - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю API отдыха с помощью sinatra и datamapper, и у меня есть файл базы данных, который выглядит следующим образом:

require 'data_mapper'

DataMapper.setup(:default,'sqlite::memory:')


class Company
 include DataMapper::Resource

 property :id, Serial
 property:name, String, :required => true
 property:adress,String,:required => true
 property:city,String, :required => true
 property:country,String,:required => true
 property:email,String
 property:phoneNumber,Numeric
 has n, :owners, :constraint => :destroy

end

class Owner
 include DataMapper::Resource

 property :id,Serial
 property:name,String, :required => true
 property:id_company,Integer, :required =>true

 belongs_to:company
end

DataMapper.finalize
DataMapper.auto_migrate!

, и я хочу создать метод публикации, чтобы добавить владельца в компанию

post '/owners'do
  content_type :json
  owner = Owner.new params[:owner]
  if owner.save
    status 201
  else
    status 500
    json owner.errors.full_messages
  end
end

но когда я пытался выполнить этот запрос, я получаю эту ошибку:

curl -d "owner[name]=rrr & owner[id_company]=1" http://localhost:4567/owners
["Company must not be blank"]

Может кто-нибудь сказать мне, как сделать связь между компанией и владельцем в методе post?

1 Ответ

0 голосов
/ 06 ноября 2019

Проблема в том, что это не должно быть id_company, это должно быть company_id, изменяющее ...

 property:id_company,Integer, :required =>true

на

property :company_id,Integer, :required =>true

и выполняющее скручивание таким образом, должно исправитьэта ошибка

curl -d "owner[name]=rrr & owner[company_id]=1" http://localhost:4567/owners
...