0

こんにちは私はプロジェクトを実装しています。この Loan_fines テーブルでは、本とカテゴリの 2 つのテーブルを参照しています。

次のエラーが表示されます:-

NoMethodError in LoanFinesController#create

undefined method `blank' for [1, 1]:Array

app/models/loan_fine.rb:32:in `book_or_category'
app/controllers/loan_fines_controller.rb:46:in `block in create'
app/controllers/loan_fines_controller.rb:45:in `create'

私のローン罰金表は次のとおりです:-

  id integer NOT NULL DEFAULT nextval('loans_fines_id_seq'::regclass),
  category_id integer,
  book_id integer,
  loan_duration integer,
  fine_amount numeric(8,2) DEFAULT 0.0,
  fine_duration integer,
  deleted integer NOT NULL DEFAULT 0,
  CONSTRAINT loans_fines_pkey PRIMARY KEY (id)

nextval('loans_fines_id_seq'::regclass)この表は先輩から譲り受けたものなのですが、意味も理由もわかりません

また、作成のための私のローン罰金コントローラーは次のとおりです:-

 def create
    @loan_fine = LoanFine.new(params[:loan_fine])

    respond_to do |format|
      if @loan_fine.save
        format.html { redirect_to @loan_fine, notice: 'Loan fine was successfully created.' }
        format.json { render json: @loan_fine, status: :created, location: @loan_fine }
      else
        format.html { render action: "new" }
        format.json { render json: @loan_fine.errors, status: :unprocessable_entity }
      end
    end
  end

私のローン罰金モデルは次のとおりです:-

class LoanFine < ActiveRecord::Base

    attr_accessible :book_id, :category_id, :loan_duration, :fine_amount, :fine_duration

    # ------- ASSOCIATIONS -----------

    belongs_to :book

    belongs_to :category

    # ------ VALIDATIONS ------

    validate :book_or_category

  private

    def book_or_category
        if [self.book_id, self.category_id].compact.blank.size == 0
            errors[:base] << ("Please choose either book or category.")
        end
    end

end

私はこれにこだわっています.これを実装する方法がわかりません.誰か助けてください.

4

1 に答える 1

0

あなたのエラーはこのファイルにあります

app/models/loan_fine.rb

具体的には、スタックトレースで指定されている32行目

app/models/loan_fine.rb:32:in `book_or_category'

しかし、エラーに基づいて、のblank代わりに呼び出していますblank?。したがって、解決策は、loan_fineモデルの32行目に変更blankすることです。blank?

更新:コードに基づいて、book_idまたはcategory_idが存在するかどうかを確認します。2つのオプションがあります

  1. if self.book_id.blank? && self.category_id.blank?
  2. if [self.book_id, self.category_id].reject(&:blank?).size == 0
于 2013-03-15T11:09:25.770 に答える