如何在生产环境中的 Rails 模型中运行动态代码
我想向我的模型添加一个 get_options
方法。然而,据我了解,在生产环境中,模型只能运行一次。我需要在模型中使用 I18n,因此输出将根据用户选择的语言而变化。 我如何在生产中制作这样的东西?
class ListHourlyPay < ActiveRecord::Base
def self.get_options
ListHourlyPay.all.map(&:amount).index_by { |obj| I18n.t("activerecord.attributes.part_time.hourly_pay_options.#{obj}") }
end
end
谢谢!
另外,我什至不确定这行不通 - 这只是我根据所听到的内容进行的怀疑。
I'd like to add a get_options
method to my model. However, it is my understanding that in a production environment, models only get run once. I need to use I18n in my model, and so the output will change based on the language the user chose.
How do I make something like this work in production?
class ListHourlyPay < ActiveRecord::Base
def self.get_options
ListHourlyPay.all.map(&:amount).index_by { |obj| I18n.t("activerecord.attributes.part_time.hourly_pay_options.#{obj}") }
end
end
Thanks!
p.s. I'm not even sure this doesn't work - it is just my suspicion based on what I've heard.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,模型运行一次,但方法被调用多次。任何时候调用 get_options 时,字符串都会被重新翻译 - 我不担心。
Yes, models are run once, but methods are called multiple times. Any time
get_options
is called, the string will be re-translated - I wouldn't worry.