无法对ActiveRecord :: Validator类运行限制

时间:2015-09-02 14:24:21

标签: ruby-on-rails ruby ruby-on-rails-4

我无法理解为什么这是错的。 我有一个铁路运输网站,如果用户已经售罄,他们就不应该预订第一个(或第二个)座位。这是代码

class CountValidator < ActiveModel::Validator
def validate(record)
        if (record.second || record.first)
        record.errors[:base]<< ' error '
        end 
end 
end

class DepartureValidator < ActiveModel::Validator

def validate(record)
        if record.date_trip.nil? || record.date_trip < Date.today
        record.errors[:base]<< ' error '
        end 
end 

end 

class Reservation < ActiveRecord::Base
  validates_with DepartureValidator
  validates_with CountValidator

  belongs_to :dep ,:class_name => 'Stop', :foreign_key => 'dep_id'
  belongs_to :arr ,:class_name => 'Stop',:foreign_key => 'arr_id'
  belongs_to :route
  belongs_to :user
  delegate :CountStop, :to => :route, prefix: true, :allow_nil => false
  delegate :city ,:to => :arr, :allow_nil => false
  delegate :city ,:to => :dep, :allow_nil => false

def division 
  return Reservation.select{|r| r.route_id == route_id && r.date_trip == date_trip && r.id != id }
end

def second
        if (class_point == 2)
        y=division.select{ |l| l.class_point == 2 }.count
        if(y+1 > route.train.second_class_seats)
                return true
        end
        end
        return false
end
def first
        if (class_point == 1)
        y=division.select{ |l| l.class_point == 1 }.count
        if(y+1 > route.train.prima_classe_seats)
                return true
        end
        end
        return false
end


end

这是完整的错误消息

    Started POST "/reservations" for 127.0.0.1 at 2015-09-02 16:46:01 +0200
Processing by ReservationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"7sHFpj6yzhfy9IC67OTu8qQDuDNCk3Gqhj4iCcRN3fARpkd9bsQCEWZomT6WBFJ8ty5BZk/Fv78PKL5aceL+Eg==", "reservation"=>{"class_point"=>"1", "route_id"=>"2", "dep_id"=>"4", "arr_id"=>"4"}, "commit"=>"Create reservation!"}
  User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 1]]
   (0.1ms)  begin transaction
  Reservation Load (0.2ms)  SELECT "reservations".* FROM "reservations"
  Route Load (0.1ms)  SELECT  "routes".* FROM "routes" WHERE "routes"."id" = ? LIMIT 1  [["id", 2]]
   (0.1ms)  rollback transaction
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.5ms)

NoMethodError (undefined method `prima_classe_seats' for nil:NilClass):
  app/models/reservation.rb:47:in `first'
  app/models/reservation.rb:3:in `validate'
  app/controllers/reservations_controller.rb:33:in `block in create'
  app/controllers/reservations_controller.rb:32:in `create'


  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (6.1ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4.1ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.6ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (26.4ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/_markup.html.erb (0.5ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (0.5ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.9ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.5ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/console.js.erb within layouts/javascript (18.2ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/main.js.erb within layouts/javascript (0.9ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.7ms)
  Rendered /home/railsuser/.rvm/gems/ruby-2.2.2/gems/web-console-2.2.1/lib/web_console/templates/index.html.erb (35.9ms)

0 个答案:

没有答案
相关问题