2014-11-30 3 views
1

그래서 내가 Datamapper (이것은 루비 /시나 프로젝트에)에 의해 생성 된 클래스 '범위'가 있습니다: 인수의 잘못된 번호 (2..3 1) (하면 ArgumentError)

class Range 
    include DataMapper::Resource 
    #properties 
    property :id, Serial, :key => true 
    property :default_gateway, String 
    property :subnetmask, String 
    property :main_ip, String 
    property :backup_ip, String 
    property :dhcp, String 
    #relations 
    belongs_to :vlan, :required => true 
    has n, :dhcp 
end #class Range 

또한 메인 클래스에서 호출하는 'initdata'파일이 있습니다. 이 파일의 일부는 일부 더미 데이터로 데이터베이스를 채 웁니다. 문제는 Ranges 클래스에서 ArgumentError를 제공합니다.

Initdata 루비 파일 :

#CREATE RANGES 
if Range.count == 0 
    puts '----- ADDING RANGES -----' 
    range1 = Range.first_or_create(:default_gateway => '10.1.2.44', :subnetmask => '0.0.255.255', :main_ip => '10.1.0.1', :backup_ip => '10.1.0.2', :dhcp => '192.168.1.2', :vlan_id => 1) 
    range1.errors.each do |error| 
    puts error 
    end 
end 

내가 터미널에서 실행할 때 나는 다음과 같은 오류가 발생합니다 :

----- ADDING RANGES ----- 
/home/bene/.rvm/gems/ruby-2.1.3/gems/dm-validations-1.2.0/lib/dm-validations.rb:129:in `initialize': wrong number of arguments (1 for 2..3) (ArgumentError) 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/dm-validations-1.2.0/lib/dm-validations.rb:129:in `new' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/dm-validations-1.2.0/lib/dm-validations.rb:129:in `create' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/dm-core-1.2.0/lib/dm-core/model.rb:444:in `first_or_create' 
    from /home/bene/project/development_sam/lan_portal/dal/initdata.rb:328:in `<top (required)>' 
    from /home/bene/project/development_sam/lan_portal/app.rb:6:in `require' 
    from /home/bene/project/development_sam/lan_portal/app.rb:6:in `<top (required)>' 
    from /home/bene/project/development_sam/lan_portal/config.ru:1:in `require' 
    from /home/bene/project/development_sam/lan_portal/config.ru:1:in `block in <main>' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize' 
    from /home/bene/project/development_sam/lan_portal/config.ru:in `new' 
    from /home/bene/project/development_sam/lan_portal/config.ru:in `<main>' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_options_from_config' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/server.rb:199:in `app' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/server.rb:250:in `start' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/lib/rack/server.rb:141:in `start' 
    from /home/bene/.rvm/gems/ruby-2.1.3/gems/rack-1.5.2/bin/rackup:4:in `<top (required)>' 
    from /home/bene/.rvm/gems/ruby-2.1.3/bin/rackup:23:in `load' 
    from /home/bene/.rvm/gems/ruby-2.1.3/bin/rackup:23:in `<main>' 
    from /home/bene/.rvm/gems/ruby-2.1.3/bin/ruby_executable_hooks:15:in `eval' 
    from /home/bene/.rvm/gems/ruby-2.1.3/bin/ruby_executable_hooks:15:in `<main>' 

사람이 내가 잘못 일을 할 수있는 어떤 생각을 가지고 있습니까? 나는 그것을 찾았지만, 대부분의 솔루션은 사람들이 자신의 '초기화'함수를 작성했기 때문에 나의 경우와 같이 이미 DataMapper에 정의되어있다.

답변

0

코어 루비 클래스 Range (덧붙여 말하면 2 ..3- 인자 생성자); 분명히 DataMapper는 생성자가 이미 존재하는 경우 생성자를 재정의하지 않습니다.

수업의 이름을 변경해야합니다.