Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 什么';在Rails模型中获取资源的完整url的最佳方法是什么?_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 什么';在Rails模型中获取资源的完整url的最佳方法是什么?

Ruby on rails 3 什么';在Rails模型中获取资源的完整url的最佳方法是什么?,ruby-on-rails-3,Ruby On Rails 3,我在Rails模型中使用as_json来定制从控制器访问的返回json,如下所示: def as_json(options={}) { :id => self.uuid, :href => full_url_to_resource, :file => self.file.url, :filename => self.filename, :file_size =

我在Rails模型中使用as_json来定制从控制器访问的返回json,如下所示:

def as_json(options={})
    {
      :id         => self.uuid,
      :href       => full_url_to_resource,
      :file       => self.file.url,
      :filename   => self.filename,
      :file_size  => self.file_size,
      :date       => self.created_at
    }
  end
我想将资源的完整url作为href属性提供给客户端。我想知道是否有一种非硬编码的方法可以做到这一点

我已经在我的模型中包含了Url帮助程序

include Rails.application.routes.url_helpers
这让我可以做到:

:href => url_for_file(:host => "example.com") + '/files/' + self.uuid,
这很好,但我显然不想硬编码url。在Rails中是否有一种内置的方法可以基于当前访问的URL或默认的URL选项中定义的URL来实现这一点


或者我应该创建一个帮助器来代替它吗?

为什么不能使用普通路由帮助器,如文件\u url/files\u路径和传入self?那不行吗?我没有尝试在模型中这样做——我不认为模型应该知道它的URL。我可以使用它,但它仍然需要:host参数。是的,我想这可能不应该出现在模型中。在模型中而不是控制器中定义json结构似乎更符合逻辑/更清晰,但也许我也可以将其移动到控制器中。哦,这就是你的意思。使用一个配置参数、环境参数,或者看看rails是否已经在某个地方有了它。