使用end作为列名
我正在维护一个rails 2.1应用程序,它对列名称有一些不幸的选择。 例如,一个事件有一个开始和结束日期。 原始设计使用start
和end
而不是使用end_at
和end_at
。 当然这会导致
def end read_attribute(:end) || 1.hour.from_now end
我甚至惊讶于解析。 这是合法的ruby吗? 真正的问题是,当运行backgroundrb作业发送提醒电子邮件时,erb正在爆炸“堆栈级别太深”。 模板是
如果我在控制台中发送deliver_reminder没有错误,但是在后台作业期间调用deliver_reminder时,会发生错误。
问题:我应该重构删除end
方法,还是堆栈错误是由其他原因引起的?
在foo / mailer / reminder.rhtml的#1行
1: lib/virtual_attributes_and_associations.rb:59:in `virtual_attribute_names' lib/virtual_attributes_and_associations.rb:83:in `read_attribute_without_virtual' lib/virtual_attributes_and_associations.rb:86:in `read_attribute' vendor/rails/activerecord/lib/active_record/base.rb:2720:in `send' vendor/rails/activerecord/lib/active_record/base.rb:2720:in `clone_attribute_value' vendor/rails/activerecord/lib/active_record/dirty.rb:127:in `write_attribute' vendor/rails/activerecord/lib/active_record/attribute_methods.rb:211:in `data=' lib/virtual_attributes_and_associations.rb:9:in `included' vendor/rails/activesupport/lib/active_support/callbacks.rb:177:in `call' vendor/rails/activesupport/lib/active_support/callbacks.rb:177:in `evaluate_method' vendor/rails/activesupport/lib/active_support/callbacks.rb:161:in `call' vendor/rails/activesupport/lib/active_support/callbacks.rb:93:in `run' vendor/rails/activesupport/lib/active_support/callbacks.rb:92:in `each' vendor/rails/activesupport/lib/active_support/callbacks.rb:92:in `send' vendor/rails/activesupport/lib/active_support/callbacks.rb:92:in `run' vendor/rails/activesupport/lib/active_support/callbacks.rb:272:in `run_callbacks' vendor/rails/activerecord/lib/active_record/callbacks.rb:298:in `callback' vendor/rails/activerecord/lib/active_record/base.rb:1450:in `send' vendor/rails/activerecord/lib/active_record/base.rb:1450:in `instantiate' vendor/rails/activerecord/lib/active_record/base.rb:582:in `find_by_sql' vendor/rails/activerecord/lib/active_record/base.rb:582:in `collect!' vendor/rails/activerecord/lib/active_record/base.rb:582:in `find_by_sql' vendor/rails/activerecord/lib/active_record/base.rb:1341:in `find_every' vendor/rails/activerecord/lib/active_record/base.rb:1376:in `find_one' vendor/rails/activerecord/lib/active_record/base.rb:1362:in `find_from_ids' vendor/rails/activerecord/lib/active_record/base.rb:537:in `find' vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb:44:in `find_target' vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:196:in `load_target' vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:99:in `reload' vendor/rails/activerecord/lib/active_record/associations.rb:1084:in `contact' lib/association.rb:52:in `associated_object' lib/association.rb:48:in `association' vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:177:in `send' vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:177:in `method_missing' app/views/foo/mailer/reminder.rhtml:1:in `_run_erb_47app47views47foo47mailer47reminder46rhtml'
事实certificate问题在于一个名为association
的库方法,当我将其更改为调用associated_object(由Association#association调用)时,不再发生堆栈错误。
- 模型属性不会更新,在不更新的单独属性上调用validation错误?
- Rails选择子查询(如果可能的话,没有finder_sql)
- 如何在Ruby on Rails中有效地使用多个数据库表
- 从ActiveRecord获得排名
- HMT collection_singular_ids =删除连接模型是直接的,不会触发销毁回调
- RoR:不能在postgres中更改_column,在MySQL中可以很好(MySQL用于开发,Postgres在Heroku上)
- Rails 3.按关联模型排序
- 如何使用Ruby on Rails中的映射表跟踪模型历史记录?
- Ruby on Rails – 显示has_many表中的字段