Каковы должны быть сильные параметры для моего chapters_controller
, если у меня есть объект Book
и объект Chapter
?Rails Углеродистая проницаемость сильных параметров
Примечание: Я использую API JSON.
В моей chapters_controller
должны мои сильные параметры будут:
:title, :order, :content, :published, :book, :picture
Или она должна быть:
:title, :order, :content, :published, :book_id, :picture
Если я использую :book
вместо :book_id
, то в моем приложении Ember, когда я иду чтобы создать новую главу, я могу ее создать и связать эту главу с родительской книгой, однако мой тест не выполнен:
def setup
@book = books(:one)
@new_chapter = {
title: "Cooked Wolf Dinner",
order: 4,
published: false,
content: "The bad wolf was very mad. He was determined to eat the little pig so he climbed down the chimney.",
book: @book
}
end
def format_jsonapi(params)
params = {
data: {
type: "books",
attributes: params
}
}
return params
end
...
test "chapter create - should create new chapter assigned to an existing book" do
assert_difference "Chapter.count", +1 do
post chapters_path, params: format_jsonapi(@new_chapter), headers: user_authenticated_header(@jim)
assert_response :created
json = JSON.parse(response.body)
attributes = json['data']['attributes']
assert_equal "Cooked Wolf Dinner", attributes['title']
assert_equal 4, attributes['order']
assert_equal false, attributes['published']
assert_equal @book.title, attributes['book']['title']
end
end
Я получаю ошибку в моей консоли, говорящей о несоответствии типа ассоциации.
Возможно, моя линия:
book: @book
вызывает это?
В любом случае, ощущение кишки говорит мне, что я должен использовать :book
в моих chapters_controller
сильных параметрах.
Это просто мой тест не проходит, и я не уверен, как написать хэш параметров для моего теста.