0

関連モデルの属性を更新しようとしています。

作成中のモデル レコードはinvitem、関連するモデル レコードですmatitem

これは私がinvitemコントローラーで試しているコードです:

  def create
    @invitem = Invitem.new(params[:invitem])

    respond_to do |format|
      if @invitem.matitem_id != nil
        Matitem.find(@invitem.matitem_id).update_attributes(:qty => (:qty - @invitem.units))
      end
      if @invitem.save

@invitem.unitsRails は、私が減算しようとしている方法が好きではありません:qty

私は得る

undefined method `-' for :qty:Symbol
4

3 に答える 3

4

''decrement'' メソッドを使用するとよりクリーンになります。

Matitem.find(@invitem.matitem_id).decrement!(:qty, @invitem.units)

編集:さらに、コントローラーメソッドを書き直すことを検討する必要があります。デクリメント操作は、モデル ロジックの一部のようです。Invitem モデルで before_create コールバックを使用して、関連付けられている matitem.qty が存在する場合は減少させます。

于 2013-10-31T18:44:10.390 に答える