ruby初始化方法参数不匹配
我正在使用activerecord在Sinatra中编写一个应用程序,所以我想我的问题与Rails中的相同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_
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))**