Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby初始化方法参数不匹配_Ruby_Class_Activerecord_Arguments_Sinatra - Fatal编程技术网

ruby初始化方法参数不匹配

ruby初始化方法参数不匹配,ruby,class,activerecord,arguments,sinatra,Ruby,Class,Activerecord,Arguments,Sinatra,我正在使用activerecord在Sinatra中编写一个应用程序,所以我想我的问题与Rails中的相同 class Entry < ActiveRecord::Base require 'date' belongs_to :bankaccount end class Recurrent < Entry attr_accessor :date_1, :date_2, :monthly_entry def initialize (date_

我正在使用activerecord在Sinatra中编写一个应用程序,所以我想我的问题与Rails中的相同

class Entry < ActiveRecord::Base

    require 'date'
    belongs_to :bankaccount

end


class Recurrent < Entry

    attr_accessor :date_1, :date_2, :monthly_entry

    def initialize (date_1, date_2)
        @date_1 = date_1 # format DateTime.new(2020,12,5) 
        @date_2 = date_2
    end

    # other methods
当我删除参数时,会收到以下错误消息:

>> recurrent = Recurrent.new
**ArgumentError (wrong number of arguments (given 1, expected 2))**
当我在纯ruby中执行此操作并在irb中运行它时,如果没有activerecord,它可以正常工作。

根据:

创造 活动记录接受散列或块中的构造函数参数。当您从其他地方(如HTTP请求)接收数据时,哈希方法特别有用。它的工作原理如下:

user=user.new(姓名:“大卫”,职业:“代码艺术家”)
user.name#=>“David”
也可以使用块初始化:

user=user.new do | u|
u、 name=“大卫”
u、 职业=“代码艺术家”
结束
当然,您可以创建一个裸对象,并在事实发生后指定属性:

user=user.new
user.name=“David”
user.occulation=“代码艺术家”
因此,
ActiveRecord
对象允许三种不同的创建方式:

  • 没有参数,请稍后设置属性
  • 块参数
  • 一个
    Hash
    参数
他们不允许有两个论点

>> recurrent = Recurrent.new
**ArgumentError (wrong number of arguments (given 1, expected 2))**