Ruby on rails 动态环境变量

Ruby on rails 动态环境变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在重构一些我认为有问题的代码,不确定最好的处理方法 我的原始代码是: def some_url if Rails.env == "development" url = "http://12.12.12.12/something/#{self.id}" else url = "https://www.#{ENV['DOMAIN']}/something/#{self.id}?trk=0&updated_at=#{self.updated_at}"

我正在重构一些我认为有问题的代码,不确定最好的处理方法

我的原始代码是:

def some_url
    if Rails.env == "development"
      url = "http://12.12.12.12/something/#{self.id}"
    else
      url = "https://www.#{ENV['DOMAIN']}/something/#{self.id}?trk=0&updated_at=#{self.updated_at}"
    end
end
我不喜欢
if Rails.env==“development”
部分,我正在尝试将此URL提取到环境变量。我的第一次尝试是:

def some_url
    "#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS']}"
end

一切都很好,直到我在处更新了
为止。除了开发,我在任何环境中都需要它。因此,我不能将其添加为环境变量,因为它是动态的。有条件地添加它是没有意义的,因为它没有比我现在做的更好。关于如何处理这个问题,有什么想法吗?

好吧,您需要有条件地使用param,所以除了通过有条件的。就我个人而言,我可能会走这条路:

def some_url(params = {})
  base_url = "#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS']}"

  params.merge!(updated_at: self.updated_at) unless Rails.env.development?

  base_url << "?#{params.to_query}" unless params.blank?
end
def some_url(params={})
base_url=“#ENV['DOMAIN']}/something/#{self.id}/#{ENV['url_PARAMS']}”
合并!(更新地址:self.updated地址)除非Rails.env.development?

我想你需要一个条件。我能想到的唯一方法是使用正则表达式从您的ENV变量中匹配“updated_at=”并将其子代为“updated_at={self.updated_at}”

像这样:

def some_url
    "#{ENV['DOMAIN']}/something/#{self.id}/#{ENV['URL_PARAMS'].sub('updated_at=', "updated_at=#{self.updated_at}")}"
end

我喜欢这种方法。我可以看出没有办法绕过条件,所以我认为这是最干净/最好的选择。谢谢你的帮助。这也是一个很好的选择,但我不确定我是否想做正则表达式,不过我还是喜欢这个主意。谢谢你的帮助。是的,我认为另一个解决办法是更干净