비 모델 매개 변수 허용 방법을 이해하는 데 어려움을 겪고 있습니다.RoR 비 모델 매개 변수 허용
내가 읽은 :
- Rails Strong Parameters: How to accept both model and non-model attributes?
- Rails 4 Strong parameters : permit all attributes?
- Strong Parameters
그래서, "정상적인"상황 -의 난 그냥이 모델 Foo
을 가정 해 봅시다 하나의 속성 bar
:
# foo.rb
class Foo < ActiveRecord::Base
# bar, which is a integer
end
# views/foos/new.html.erb
<%= form_for @foo do |f| %>
<%= f.number_field :bar %>
<%= f.submit %>
<% end %>
#foos_controller.rb
def create
@foo = Foo.new(foo_params)
# ...
end
#...
private
def foo_params
params.require(:foo).permit(:bar)
end
양식을 제출하면 Foo
이 생성됩니다.
그러나, bar
속성이 뒤에 어떤 논리가 어떤 경우 일부 비 모델 매개 변수를 결합한? bar
이 두 개의 매개 변수 (bar = bar_1 + bar_2
)의 합계라고 가정 해 보겠습니다. 그런 다음 뷰와 컨트롤러는 다음과 같습니다
# views/foos/new.html.erb
<%= form_for @foo do |f| %>
<%= f.number_field :bar_1 %>
<%= f.number_field :bar_2 %>
<%= f.submit %>
<% end %>
#foos_controller.rb
def create
bar_1 = params[:foo][:bar_1]
bar_2 = params[:foo][:bar_2]
if bar_1.present? && bar_2.present?
@foo = Foo.new
@foo.bar = bar_1.to_i + bar_2.to_i
if @foo.save
# redirect with success message
else
# render :new
end
else
# not present
end
end
그래서 질문은, 나는 또한 bar_1
및 bar_2
매개 변수를 허용해야합니까입니까? 내가 그렇게한다면, 어떻게 그들을 허용합니까? 당신이 그 않는 두 모델 매개 변수에 액세스하려면
는 방법은 다음 정말 필요하지? – Vucko
예. 'Foo.new (foo_params)'를 계속 수행 할 것입니다. – lcguida
내가 가지고 있다고 생각해.건배 – Vucko