如何在rails中使用self关键字

关于rails中的关键字“self”,让我们以下面的代码片段为例。 我知道关键字是指类本身的实例,例如表达式“self.encrypted_pa​​ssword”。 无论如何,我很少知道为什么作为右侧参数传递的属性“password”也没有以self关键字作为前缀? 任何人都可以启发我什么时候使用或不使用我的例子后的self关键字给? class User true, :confirmation => true, :length => { :within => 6..40 } before_save :encrypt_password private def encrypt_password self.encrypted_password = encrypt(password) end def encrypt(string) string # Only a temporary implementation! end end

Facebook重定向url在ruby on rails上打开ssl错误

我跟随了omniauth devise facebook应用程序,正如Ryan在第235集中所解释的那样。用户授权后我们在http:// localhost:3000 / auth / facebook / callback?code = 13444收到错误… 以下是facebook设置:App Domain:localhost siteurl:locahost:3000 / canvas url: http:// localhost:3000 / auth / facebook / 请告诉我我哪里错了?

Rails 3.1错误捕获

我认为Rails 3.1正在改变引发错误的方式。 任何人都可以协助或确认吗? 我正在尝试使用Rails 3.1.0.rc1创建自定义错误页面 unless config.consider_all_requests_local rescue_from Exception, :with => :render_error rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found rescue_from ActionController::RoutingError, :with => :render_not_found rescue_from ActionController::UnknownController, :with => :render_not_found rescue_from ActionController::UnknownAction, :with => :render_not_found end ^^这不起作用。 config.consider_all_requests_local = true 默认情况下,这是在我的开发环境中。 我假设Rails 3.1删除了“action_controller”但我无法在任何地方确认这一点。 谢谢!

使用Ruby on Rails进行时间可用性比较

我希望有一个多个对象的可用性表,并进行比较。 例如,承租人将搜索租赁单位,该单位在星期一下午1-3点开始提供。 为了做到这一点,我想我会把这周分成30分钟的时间段并给每个时段一个ID。 然后日期范围将搜索相应的时隙ID。 然而,那时我需要5040条记录来跟踪每个时间段,而且我对于手动维护它并不太兴奋(在Ruby中我不知道如何去做)。 是否有一个更优雅的方法,通过使用日期时间,或一些Rails插件,将执行类似于我想要的东西,但更容易? 关键要求是它必须比较多个分开的时间块。 编辑:如果可以有一种比较多个时间块来查看最佳匹配的方法,那将是一个奖励。 例如,如果我想在星期一,星期三和星期五租用摄像机,并且一天有一台摄像机可用,而另一台摄像机只有两天可用,我希望能够对摄像机进行比较和排序。最佳匹配的基础。

我在Mac OS X上遇到“RVM不是函数”错误,并且没有发布的解决方案

我在Mac OS x 10.8.2(“Mountain Lion”)上,我成功安装了RVM 1.17.8及其依赖项。 我可以使用它来安装使用rvm install 1.9.2 Ruby版本,但我无法在不收到此错误的情况下执行rvm use : RVM is not a function, selecting rubies with ‘rvm use …’ will not work. You need to change your terminal emulator preferences to allow login shell. Sometimes it is required to use `/bin/bash –login` as the command. Please visit https://rvm.io/integration/gnome-terminal/ for a example. […]

无法安装ruby gems – zlib错误

我正在尝试安装一些Ruby Gems,所以当我收到twitter消息时,我可以使用Ruby来通知我。 但是,在进行了gem update –system ,我现在每次尝试执行gem install时都会收到zlib错误。 下面是我在尝试安装ruby gems时获得的控制台输出。 (以及来自gem environment的输出)。 C:\data\ruby>gem install twitter ERROR: While executing gem … (Zlib::BufError) buffer error C:\data\ruby>gem update –system Updating RubyGems ERROR: While executing gem … (Zlib::BufError) buffer error C:\data\ruby>gem environment RubyGems Environment: – RUBYGEMS VERSION: 1.2.0 – RUBY VERSION: 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32] – INSTALLATION DIRECTORY: c:/ruby/lib/ruby/gems/1.8 […]

Rails“ActiveRecord_Associations_CollectionProxy的未定义方法”

我有这个型号: class Student < ActiveRecord::Base has_many :tickets has_many :movies, through: :tickets end class Movie < ActiveRecord::Base has_many :tickets, dependent: :destroy has_many :students, through: :tickets belongs_to :cinema end class Ticket < ActiveRecord::Base belongs_to :movie, counter_cache: true belongs_to :student end class Cinema < ActiveRecord::Base has_many :movies, dependent: :destroy has_many :students, through: :movies has_many :schools, dependent: :destroy has_many […]

如何使用最新版本的Ruby连接到具有无效证书的https服务器

请考虑以下代码: require ‘net/https’ uri = URI.parse(“https://host/index.html”) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(uri.path) response = http.request(request) 其中https://host/index.html是服务器上的证书无效的有效地址。 在旧版本的ruby(特别是1.8.7-p334和1.9.2-p180)上,这段代码运行正常。 在所有最新版本(1.8.7-p352,1.9.2-p290和1.9.3-p0)中,它抛出以下exception: OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=unknown state 在最后一行。 将verify_mode更改为OpenSSL::SSL::VERIFY_PEER确实提供了错误,表明它正在尝试validation证书,而不管设置如何。 如何说服ruby忽略无效证书并连接?

在Ruby中,如何在加载YAML文档时警告哈希中的重复键?

在下面的Ruby示例中,是否有一种模式让YAML无法忽略重复键’one’? irb(main):001:0> require ‘yaml’ => true irb(main):002:0> str = ‘{ one: 1, one: 2 }’ => “{ one: 1, one: 2 }” irb(main):003:0> YAML.load(str) => {“one”=>2} 谢谢!

安全显示上传了paperclip gem的图像

默认情况下:paperclip gem存储公共目录中的所有附件。 出于安全原因,我不想将附件存储在公共目录中,因此我将它们保存在应用程序根目录的uploads目录中: class Post < ActiveRecord::Base belongs_to :user has_attached_file :some_image, path: ":rails_root/uploads/:attachment/:id/:style/:filename" do_not_validate_attachment_file_type :some_image end 我没有指定url选项,因为我不想为每个图像附件添加url。 如果指定了url:那么具有该url的任何人都可以访问该图像。 这不安全。 在user#show页面中:我想实际显示图像。 如果我使用所有回形针默认值,那么我可以这样做,因为图像将在公共目录中,图像将有一个URL: Some image: 看来如果我将图像附件保存在公共目录之外并且没有指定URL(再次:执行此操作以保护图像),则图像将不会在视图中呈现。 我知道如何通过pundit gem在整个应用程序中进行授权。 但是,当该图像可公开访问时,授权图像是无用的。 因此,我尝试通过删除URL并将图像保存在公共目录之外来使图像无法公开访问,但随后图像不再在视图中呈现。 更新 :我的问题实际上归结为:我的图像保存在我的rails应用程序中。 使用回形针:有没有办法在视图中安全地显示图像? 换句话说:设置它使图像没有自己独立的URL(因为任何有该URL的人都可以访问该图像,使该图像不安全)。 以下是安全显示图像的一些示例: 示例#1:仅在用户登录时显示图像。(图像没有自己独立的URL,因此没有其他方法可以访问图像) 示例#2:仅在用户与此图像关联时显示图像。 (图像没有自己独立的url,因此没有其他方法可以访问图像) 附加更新 :我知道我可以安全地发送一个send_file文件,允许用户下载图像,但这不是我想要做的。 我不希望用户下载图像。 相反:我希望用户能够在网页上实际看到图像。 我想在页面上安全地显示/渲染图像。 使用send_file (据我所知)允许用户下载文件。 它不会在页面上呈现图像。