如何为欧姆对象动态设置字段?
class OhmObj < Ohm::Model
attribute :foo
attribute :bar
attribute :baz
def add att, val
self[att] = val
end
end
class OtherObj
def initialize
@ohm_obj = OhmObj.create
end
def set att, val
@ohm_obj[att] = val #doesn't work
@ohm_obj.add(att, val) #doesn't work
end
end
中的attribute
classOhm::Model
方法为命名属性定义访问器和更改器方法:
def self.attribute(name)
define_method(name) do
read_local(name)
end
define_method(:"#{name}=") do |value|
write_local(name, value)
end
attributes << name unless attributes.include?(name)
end
因此,当您说时attribute :foo
,您可以免费获得以下方法:
def foo # Returns the value of foo.
def foo=(value) # Assigns a value to foo.
您可以send
像这样调用mutator方法:
@ohm_obj.send((att + '=').to_sym, val)
如果您真的想说,@ohm_obj[att] = val
那么可以在OhmObj
课堂上添加以下内容:
def []=(att, value)
send((att + '=').to_sym, val)
end
您可能还希望访问器版本保持对称:
def [](att)
send(att.to_sym)
end
问题内容: 如果我想使格式化后的字符串动态可调,则可以从 至 但是,这里的字符串连接似乎很麻烦。还有其他简化方法吗? 问题答案: 您可以从参数列表中获取填充值: 您甚至可以动态插入填充值:
cmf_set_dynamic_config($data) 功能 设置动态配置 参数 $data: array 要设置的数据,格式["cmf_default_theme"=>'simpleboot3'] 返回 boolean
问题内容: 我有一个带有两个表的SQL Server 2008数据库。第一个表称为Department。第二个表称为票证。这两个表的定义如下: 我正在尝试找出一种动态更新Department.TotalTickets值的方法。当添加或删除工单时,我想自动增加或减少TotalTickets的值。有人可以告诉我在SQL Server 2008上执行此操作的最佳方法吗? 谢谢 问题答案: 有多种方法可以
问题内容: 我想将String放入比给定单元格宽度更长的字符串中。如何动态设置,以便可以读取整个String?这是一个例子: 在这里,您将看到将给定单元格较长的每个文本换行的代码 谢谢,但是我想根据字符串的长度动态地实现RowHeight。我想读取单元格中的整个字符串/文本。有什么建议? 我是Java初学者,这是我的第一个问题。我很高兴得到答案。 问题答案: 使用JTextArea作为呈现组件时会
问题内容: 在Webfaction共享主机帐户上设置Redis数据库需要执行哪些步骤? 问题答案: 由于Webfaction服务器的特殊环境限制,安装说明并不像它们那样简单。不过,最后您将拥有一个功能齐全的Redis服务器,即使重新启动后它也可以保持运行状态。大约半年前,我通过以下步骤亲自安装了Redis,此后一直运行良好。只是警告一下,半年不是很长的时间,尤其是因为服务器没有被大量使用。 这些说
cmf_set_dynamic_config($data) 功能 设置动态配置 参数 $data: array 要设置的数据,格式['template' => ['cmf_default_theme' => 'default']] 返回 boolean