Hej,
robię sobie api do którego przychodzą jakieś parametry. I zastanawiam się jak i w którym momencie sprawdzać czy są obecne i poprawne. Chciałbym by kontroler był jak najchudszy.
Na przykład jeśli którychś z parametrów jest zły:
def index
Post.from(params[:date_from]).to(params[:date_to]).for_user(params[:user_id])
rescue ArgumentError => e
render json: e.to_json, status: :bad_request
end
Tylko gdzie rzucać ArgumentError? W jakimś before filter w kontrolerze którzy waliduje parametry dla akcji? Czy może w scopach?
Czy może stworzyć coś na kształt ApiPost#from_to_by_user które będzie się zajmowało zwracaniem odpowiedzi i jednocześnie walidacją parametrów?
Mi bardziej chodzi o parametry dla metod wywoływanych by api uzyskało odpowiednie dane. A z tego co widzę to strong parameters raczej odnosi się do mass assighment. A ja potrzebuję innych parametrów dla każdej akcji (każda wyciąga coś innego).
Mi bardziej chodzi o parametry dla metod wywoływanych by api uzyskało odpowiednie dane. A z tego co widzę to strong parameters raczej odnosi się do mass assighment. A ja potrzebuję innych parametrów dla każdej akcji (każda wyciąga coś innego).[/quote]
Chodziło mi mniejwięcej o coś takiego
[code]def index
Post.from(post_params[:date_from]).to(post_params[:date_to]).for_user(post_params[:user_id])
end
private
def post_params @post_params ||= params.require(:date_from, :date_to, :user_id)
end[/code]
Ale teraz widzę że require pozwala tylko na określenie 1 parametru wymaganego i faktycznie w obecnej formie nie nadaje się do niczego innego jakt tylko do ladania mass assignment