0

我正在使用 Ruby on Rails,我想呈现一个网页,该网页利用数据库数据进行宣传。源代码声明如下:

# Model
PROMO_ID = 9

# Controller
@promo_article = Article.find(PROMO_ID)

# View
<%= @promo_article.title %>
<%= @promo_article.content %>

在上面的代码中,我“简单地”查找与数据库记录相关的对象实例(促销实例),然后在视图中呈现它。但是,通过使用上面的代码,我必须确保记录存在(与 为 所述id相同PROMO_ID)作为必要条件,否则应用程序可能会引发错误。

我遇到了麻烦,因为为了使页面正常工作,记录必须存在于开发和生产数据库中,并且它的引用PROMO_ID可能会有所不同,因为在开发中它可能是9(如上面的代码中)而在生产中它可能是378.

我曾考虑使用模拟对象来达到我的目的,但我想使用数据库记录,因为这样用户可以进一步处理“促销”记录。我正在寻找一个平衡和精益的解决方案来解决这个问题。

你有什么建议?我应该如何进行?我应该声明一些id常量还是使用模拟对象?

4

2 回答 2

1

尝试使用比find.

# in model
def self.december_promo
  find_by(title: 'December 2014 Promo') }
end

# in controller
@promo_article = Article.december_promo

find_by如果它没有找到记录,它将为零。

于 2014-12-25T16:59:55.380 回答
0

简单的用例表达

case Rails.env
  when "development"
    PROMO_ID = 9
  when "production"
    PROMO_ID = 378
end
于 2014-12-25T15:11:21.563 回答