Ruby on rails 从可选信息创建新的类属性,而不指定名称
我有一门课是这样的:Ruby on rails 从可选信息创建新的类属性,而不指定名称,ruby-on-rails,ruby,class,methods,Ruby On Rails,Ruby,Class,Methods,我有一门课是这样的: class Item attr_accessor :item_id, :name, :address, :description, :facilities, :ratings, :directions, :geo, :images, :video, :availability def self.create options={} item = Item.new item.item_id = options[:item_id] item.na
class Item
attr_accessor :item_id, :name, :address, :description, :facilities, :ratings, :directions, :geo, :images, :video, :availability
def self.create options={}
item = Item.new
item.item_id = options[:item_id]
item.name = options[:name]
item.description = options[:desc]
item.ratings = options[:rating]
return item
end
end
如何使“create”方法能够读取正在传递的给定选项并尝试创建它们,而不必显式指定它们的名称
ie.no item.name=选项[:item_id]等。。。。只是计算机大脑会想:“啊……我看到选项‘option[:name],让我尝试创建一个具有相同名称和此值的属性!…”
如果你特别喜欢冒险:
class Object
def metaclass; class << self; self; end; end
end
class Item
def initialize(options = {})
options.each {
|k,v|
self.metaclass.send(:attr_accessor, k)
self.send( "#{k.to_s}=".intern, v)
}
end
end
i = Item.new(:a => 1, :c => "dog")
puts i.a
# 1
puts i.c
# dog
i2 = Item.new
puts i2.a
# ERROR
类对象
def元类;第1类:c=>“狗”)
把i.a
# 1
把i.c
#狗
i2=项。新
把i2.a
#错误
如果你特别喜欢冒险:
class Object
def metaclass; class << self; self; end; end
end
class Item
def initialize(options = {})
options.each {
|k,v|
self.metaclass.send(:attr_accessor, k)
self.send( "#{k.to_s}=".intern, v)
}
end
end
i = Item.new(:a => 1, :c => "dog")
puts i.a
# 1
puts i.c
# dog
i2 = Item.new
puts i2.a
# ERROR
类对象
def元类;第1类:c=>“狗”)
把i.a
# 1
把i.c
#狗
i2=项。新
把i2.a
#错误