Railsのaccepts_nested_attributes_forの使い方を教えてください。
現在、Railsアプリを製作しています。
accepts_nested_attributes_forを使用しているのですが、【subjects_controller.rb】のsaveメソッドの前に、子モデル(cost)のカラムの値を取得するにはどうすれば良いでしょうか?
やりたい事は、子モデル(cost)のカラムの値を取得して、四則演算を行い、その後saveしたいです。
※ 以下のカラムの値は投稿用のため、意図的にnilにしています。
・環境
Rails 4.2.3
Gem cocoonを使用
・親モデル
subject
・子モデル
cost
【subject.rb】 ※親モデル
has_many :costs, dependent: :destroy
accepts_nested_attributes_for :costs, allow_destroy: true
【subjects_controller.rb】
def create
@subject = Subject.new(subject_params)
※この位置で子モデル(cost)のカラムの値を参照したいです。
raise @subject.inspect、をしてみると親モデル(subjects)の<Subject id: nil, user_id: nil, created_at: nil, updated_at: nil, customer: nil, subject: nil, remarks: nil>しか入っておらず、子モデル(cost)の値を参照できないです。
respond_to do |format|
if @subject.save
※途中省略
private
def subject_params
params.require(:subject).permit(
:user_id, :customer, :subject, :remarks,
costs_attributes: [:id, :user_id, :subject_id, :material, :product, :pressure, :size, :quantity, :hvk, :fujii, :imamoto, :unit_price, :price_total, :hvk_total, :fujii_total, :imamoto_total, :selling_price, :selling_price_total, :grossmargin_rate, :gross_profit, :price_total, :remarks, :sign, :_destroy]
)
end
【cost.rb】 ※子モデル
belongs_to :subject
何卒宜しくお願い致します。
※ 追記
四則演算させたい部分はnilになっていますが、以下を返します。
def create
@subject = Subject.new(subject_params)
@hoge = @subject.costs
raise @hoge.inspect
の結果です。
<ActiveRecord::Associations::CollectionProxy [#<Cost id: nil, user_id: nil, customer_id: nil, material: nil, product: "商品A", pressure: nil, size: nil, quantity: "10", hvk: "70", fujii: "80", imamoto: "100", unit_price: nil, price_total: nil, hvk_total: nil, fujii_total: nil, imamoto_total: nil, selling_price: "800", selling_price_total: nil, grossmargin_rate: nil, gross_profit: nil, remarks: nil, created_at: nil, updated_at: nil, sign: "1", subject_id: nil>]>