Tag: 初始化

如何初始化’attr_accessor’属性值?

可能重复: attr_accessor默认值 我正在使用Ruby on Rails 3.0.9,我想在我的class \ model中初始化一些inheritance自ActiveRecord::Base attr_accessor属性值。 那是, …在我的模块中我有: class User < ActiveRecord::Base attr_accessor :attribute_name1, :attribute_name2, :attribute_name3, … end 我想将所有attr_accessor属性值设置为true 。 我怎样才能做到这一点? PS:当然我想解决上述问题,接近“Ruby on Rails Way”。 我知道after_initialize回调但是通过使用该方法我应该重复每个attribute_name语句,我想在after_initialize语句中将值设置为true (…这不是 DRY – 不要重复自己)。 也许有更好的方法来实现这一目标。 当您声明这些属性时,有没有办法“动态”设置attr_accessor属性值? 也就是说,我希望立刻声明并设置attr_accessor属性!

将实例变量初始化为数组 – Ruby

我正在尝试初始化和实例变量作为数组,如下所示: class Arch < ActiveRecord::Base attr_accessor :name1 def initialize @name1 = [] end def add_name1(t) @name1 << t end end 当我在控制台会话中尝试Arch.new时,我得到(Object不支持#inspect)。 这是怎么回事? 如何创建实例数组变量? 我试着像这样: class Arch < ActiveRecord::Base attr_accessor :name1 def after_initialize @name1 = [] end def add_name1(t) @name1 << t end end 而我的@ name1仍然是一个NilClass。 :/

在一个类中混合attr_accessor和initialize方法

我看到代码如下: class Person def initialize(name) @name = name end end 我理解这允许我做像person = Person.new这样的事情,并像在其他方法中一样在我的类中使用@name 。 然后,我看到代码如下: class Person attr_accessor :name end … person = Person.new person.name = “David” 我只是对这两种方法网格感到茫然。 def initialize(name)的具体用途是什么? 我想attr_accessor允许我读写。 这意味着它们是两种不同的方法。 是? 想要对def initialize和attr_accessor以及它们如何进行网格def initialize澄清。

通过在应用程序启动时启动worker来初始化Delayed Jobs gem

我正在使用Ruby on Rails 3.0.9,我正在尝试设置delay_job gem。 如果在重新启动Apache2服务器后,我按照以下命令在Terminal \ Console中运行,则一切正常: RAILS_ENV=development script/delayed_job stop RAILS_ENV=development script/delayed_job -n 2 start 但是,因为我总是希望在应用程序启动时启动worker,在我的config/initializers/delayed_job.rb添加以下代码(处理开发和生产模式): if Rails.env.development? system ‘RAILS_ENV=development script/delayed_job stop’ system ‘RAILS_ENV=development script/delayed_job -n 2 start’ elsif Rails.env.production? system ‘RAILS_ENV=production script/delayed_job stop’ system ‘RAILS_ENV=production script/delayed_job -n 2 start’ end 但是,通过使用上面的代码并在重新启动Apache2服务器后,DJ gem不再按预期工作。 也就是说,当我在Terminal \ Console中运行上述命令行时,它不会处理作业。 如何让DJ正常工作? 问题是什么? PS:我想这样做是为了使流程自动化。 它认为config/initializers/delayed_job.rb文件中的上述代码没有“创建” RAILS_ROOT/tmp/pids目录中与DJ相关的“pids”文件。 这些只能通过手动运行上述命令行来创建。 为什么会这样? @Devin […]

是否可以在Ruby中自动初始化多维哈希数组,就像在PHP中一样?

我习惯于在PHP中使用多维数组,在那里我可以分配和初始化哈希 unset($a); // just to show that there is no variable $a $a[‘settings’][‘system’][‘memory’] = ‘1 Gb’; $a[‘settings’][‘system’][‘disk space’] = ‘100 Gb’; 有没有办法在Ruby中做类似的事情? 或者我需要先初始化所有维度,然后分配值。 是否可以定义一个高级Hash,它可以满足我的需求? 你会怎么做? 更新 除了道格拉斯提出的解决方案(见下文)之外,我还找到了一个主题 ,其中BrianSchröäer提出了Hash类的扩展: class AutoHash self, :update_key => k) end end def []=(k, v) @update[@update_index] = self if @update and @update_index super end end 当仅在请求项目值时,例如a[‘key’] ,当允许不期望地创建丢失的散列项时,它允许解决该问题。 一些额外的参考 ruby hash autovivification(facets) […]