简短版本:我应该在哪里存储特定于环境的ID? ENV [ '一些变量']?别的地方?
长版:
假设我有一个名为Books的模型,一本书有一个类别。 (为了这个问题,我们假设一本书只有一个类别。)
class Book < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :books
end
现在让我们说一个类别被称为'情色'。而且我想要在我的类型中压制色情书籍。这似乎是直截了当的。但在生产和开发中,“情色”有不同的ID。我不希望我的代码依赖于ID。我不希望它依赖于字符串(如果'erotica'被重命名为pr0n或其他什么)。
我想我应该有像
这样的东西def suppress_method
suppress_category_id = look_up_suppression_id
...
end
但在哪里'抬头'看看?
谢谢!
答案 0 :(得分:0)
采用这种方法会很脆弱,如果你想压制多个类别怎么办?情色和政治?这里最好的设计是让您在迁移中将“抑制”作为布尔值添加到类别中,并在应用程序的管理界面中进行维护。完成后,您可以添加命名范围,如:
class Category < ActiveRecord::Base
named_scope :not_suppressed, :conditions=>{:suppressed=>false}
# or for rails 3
scope :not_suppressed, where(:suppressed=>false)
end
然后只需更新您的预先输入代码代码:
Category.not_suppressed.find ...
而不是
Category.find