是否可以使用 Object.new(:attribute => "foobar") 和 attr_accessors 创建对象?
我似乎无法解决这个问题。
我想在没有数据库的情况下完成此操作:
Object.new(:attribute_1 => "foobar", :attribute_2 => "foobar")
返回此:
ArgumentError: wrong number of arguments (1 for 0)
from (irb):5:in `initialize'
from (irb):5:in `new'
from (irb):5
我的模型:
class Object
extend ActiveModel::Naming
include ActiveModel::Conversion
def persisted?
false
end
attr_accessor :attribute_1, :attribute_2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我假设您并没有真正使用
Object
作为类名。如果是这种情况,您只需添加逻辑来在构造函数中设置属性:输出:
请注意,在现实生活中,您需要检查构造函数中传递的属性列表,以确保它们是您的有效属性。班级。
I'm going to assume that you aren't really using
Object
as your class name. If that is the case, you just need to add the logic to set your attributes in your constructor:outputs:
Note that in real life you would want to check the list of attributes passed in the constructor to make sure they are valid attributes for your class.
您可以重写initialize方法来更改Object.new的行为:
You can override the initialize method to change the behavior of Object.new: