如果问题有点不精确,请道歉,但我会在下面描述我的问题.
我在Rails项目中设置了一些模型,有一件事我注意到我遇到了几次以上的事情是处理符合以下条件的属性:
例如,我的一个模型应该有一个status可以设置为以下之一的字段:定义,执行或完成.我需要在界面中显示那些特定的单词,但是我不想将这些字符串存储在DB中,以防我将来需要更改它们(或者国际化,或者其他什么.)
显而易见的选择是为每个模型定义模型,但这似乎在维护模型时会产生大量开销,确保我在环境之间编写迁移等等,这对于每个模型来说都是如此.高架.
另一种选择是将它存储为一个整数,并打出一个"枚举"类型类来存储这些值的转换 - 这可能会正常工作,但我担心我会丢失关联和其他方便的东西我从ActiveRecord模型中获取.
有关处理这种情况的最佳方法的任何建议吗?
我们的团队最近对持续部署非常感兴趣,但是我们在如何实际部署Heroku上的代码方面遇到了一些障碍 - 似乎不可避免地需要一些停机时间才能完成代码推送到Heroku.
在传统环境中,代码部署可能如下所示:
使用Heroku,我几乎无法控制两个关键步骤:
我们目前使用维护屏幕,但它不会是一个可扩展的解决方案,如果我们移动到全连续部署(我们可能就会有大约10-20部署了一天了,维修屏幕10-20*30秒开始到加起来)
有没有人遇到过类似的问题?你是怎么解决的?在heroku上进行真正的持续部署的任何重要案例研究/成功案例?
我目前遇到了从ActionMailer发送电子邮件的问题.我正在尝试将自定义标题附加到从我的系统发送的每封电子邮件中,无论它来自哪个邮件程序.标题包含有关哪个人正在接收电子邮件的信息,因此无法在邮件程序的默认设置中进行设置,但我希望避免在每个邮件中设置此标头.
这是我目前设置的内容:
candidates.each do |c|
mail = mailer_class.send(action.to_sym, c, params)
recip = email_recipients.create!(:contact => c, :subject => mail.subject)
mail.headers['X-SMTPAPI'] = {:unique_args => {:email_recipient_id => recip.id, :database => Apartment::Database.current_database },
:category => "#{mailer}-#{action}" }.to_json
mail.deliver
end
Run Code Online (Sandbox Code Playgroud)
问题是,在a的headers哈希上设置一个键Mail::Message似乎没有改变任何东西.
我确实找到了一种通过手动设置header属性来设置标头的方法,如下所示:
m.header = m.header.to_s + "\nBlah: Blah"
Run Code Online (Sandbox Code Playgroud)
但说实话,这感觉有点hacky.有谁知道一个更好的模式来实现这一目标?