首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页标签activerecord

#activerecord

重写ActiveRecord属性的方法?

还可以使用"hash notation"来覆盖属性:

代码语言:javascript
复制
def name=(name)
  self[:name] = name.capitalize
end

def name
  self[:name].downcase
end

复制activerecord记录最简单的方法?

根据你的需求和编程风格,你也可以使用类和合并的新方法的组合。缺少一个更好的简单例子,假设你有一个任务计划在某个日期,你想复制到另一个日期。任务的实际属性并不重要,所以: old_task = Task.find(task_id) new_task = Task.new(old_task.attributes.merge({:scheduled_on => some_new_date})) 将创建一个新的任务:id => nil,:scheduled_on => some_new_date以及所有其他属性一样的原始任务。使用Task.new,你将不得不明确地调用保存,所以如果你想自动保存,将Task.new更改为Task.create。 ... 展开详请

你如何编写一个迁移来重命名Rails中的ActiveRecord模型及其表格?

在Rails 4中,我所要做的只是def变化 def change rename_table :old_table_name, :new_table_name end 我所有的指标都照顾好了。我不需要手动更新索引,通过删除旧的和添加新的索引。 而且它也适用于索引的上下变化。... 展开详请

我怎样才能在ActiveRecord中设置默认值?

秋之夕颜清念念不忘,必有回响
一些简单的情况可以通过在数据库模式中定义一个默认值来处理,但是不能处理许多棘手的情况,包括其他模型的计算值和密钥。对于这些情况我这样做: after_initialize :defaults def defaults unless persisted? self.extras||={} self.other_stuff||="This stuff" self.assoc = [OtherModel.find_by_name('special')] end end 我已经决定使用after_initialize,但我不希望它被应用到只有那些新的或创建的对象。我认为这个明显的用例没有提供after_new回调,但是我已经通过确认对象是否已经被保留来表明它不是新的。 如果条件转移到回调请求,这个更清晰: after_initialize :defaults, unless: :persisted? # ":if => :new_record?" is equivalent in this context def defaults self.extras||={} self.other_stuff||="This stuff" self.assoc = [OtherModel.find_by_name('special')] end... 展开详请
领券