小编Oxf*_*ist的帖子

Rails 3:验证:presence => true vs validates_presence_of

validates :presence和之间有什么区别validates_presence_of?通过ActiveModel它看起来他们以相同的方式设置验证.但是,给定以下模型定义:

class Account < ActiveRecord::Base
  has_one :owner_permission, :class_name => 'AccountPermission', :conditions => { :owner => true, :admin => true }
  has_one :owner, :class_name => 'User', :through => :owner_permission, :source => :user

  validate :owner, :presence => true
  validates_associated :owner
end
Run Code Online (Sandbox Code Playgroud)

在实例上调用save Account不会验证所有者的存在.但是,如果我使用validates_presence_of它会.

ruby-on-rails-3

28
推荐指数
2
解决办法
2万
查看次数

在几个文件中打破ruby模块

我有一个ruby模块,应该包含很多类

module A
  class First
    #somemethods
  end

  class Second
    #somemethods
  end

  class Third
    #somemethods
  end
end
Run Code Online (Sandbox Code Playgroud)

我想在rails中做的是将这些类拆分成几个文件,将这个庞大的模块拆分成几个相关文件的最佳做法是什么?

ruby module ruby-on-rails mixins

26
推荐指数
1
解决办法
5597
查看次数

如何在Nginx上配置ETag

我正在使用Nginx作为网络服务器,并希望实现一种浏览器缓存方法,以便用户在本地保存静态未更改文件的副本,并仅下载已更改的文件.其中一个建议是使用文件时间戳来找出已更改的文件并仅刷新它们,但在我的情况下这是不可能的,因为在每次新部署之后都会创建整个Web应用程序的新版本以及所有文件的时间戳更改.

我研究了一下ETag标题,它似乎是一个非常好的解决方案,但我发现Etags尚未得到Nginx的正式支持.

有没有办法在Nginx上实现Etags或任何替代解决方案?

etag nginx browser-cache

23
推荐指数
2
解决办法
6万
查看次数

Ruby中现有PDF中的水印

我想添加一个动态生成的文本.有没有办法在Ruby中为现有PDF添加水印?

ruby pdf ruby-on-rails prawn

16
推荐指数
3
解决办法
5999
查看次数

如何解决生产中 next-auth 的 api/auth/error 问题?

我在 Vercel 中设置了以下环境变量:

NEXTAUTH_URL=https://example.vercel.app (production) 
NEXTAUTH_URL=http://localhost:3000 (development)
Run Code Online (Sandbox Code Playgroud)

然后在 Google 提供商 GCP 控制台 ( https://console.cloud.google.com )中授权以下两个重定向 URL :

https://example.vercel.app/api/auth/callback/google
http://localhost:3000/api/auth/callback/google
Run Code Online (Sandbox Code Playgroud)

当我单击登录按钮时,它会重定向到此错误 URL:https://example.vercel.app/api/auth/error并显示“找不到此页面”。我还尝试为环境变量设置这些值:

NEXTAUTH_URL=https://example.vercel.app/api/auth 
NEXTAUTH_URL=https://example.vercel.app/api/auth/signin
Run Code Online (Sandbox Code Playgroud)

错误仍然存​​在。在开发 ( https://localhost:3000) 中,我能够成功登录:单击登录按钮时,它会正确地将我重定向到以下 URL:

http://localhost:3000/api/auth/signin?callbackUrl=http%3A%2F%2Flocalhost%3A3000%2F
Run Code Online (Sandbox Code Playgroud)

并显示 NextAuth 默认页面:

浏览器img

我的身份验证API pages/api/auth/[...nextauth].js

NEXTAUTH_URL=https://example.vercel.app (production) 
NEXTAUTH_URL=http://localhost:3000 (development)
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?我错过了什么吗?

next.js next-auth

15
推荐指数
2
解决办法
5万
查看次数

无法在任何来源中找到rake-10.0.4(Bundler :: GemNotFound)

我最近一直试图在服务器上运行我的ruby应用程序,并且我一直遇到这个错误:

Could not find rake-10.0.4 in any of the sources (Bundler::GemNotFound)
Run Code Online (Sandbox Code Playgroud)

我正在运行Rails 3.2.12和Ruby 1.9.3p392.到目前为止,我在访问服务器时没有遇到任何问题,这是我第一次遇到此错误.

我一直在寻找答案,但由于我对ruby和rails相对较新,我找不到一个简单易懂的答案.

Gemfile:

source 'http://rubygems.org'

# STANDARD SET OF GEMS, SEE BOTTOM OF FILE FOR A LIST OF OTHER USEFUL GEMS

gem 'rails', '3.2.12'

gem 'haml-rails'
gem 'retina_tag'
gem 'mysql2'
gem 'will_paginate'
gem 'bootstrap-will_paginate'
gem 'contact_form'
gem 'draper'
gem 'pony'
gem 'devise'
gem 'cancan'
gem 'activemerchant', :require => 'active_merchant'
gem 'airbrake'
gem 'libv8','~> 3.11.8'

gem "therubyracer"
gem 'less-rails'
gem "twitter-bootstrap-rails" 
gem "font-awesome-rails", "~> 3.0.2.0"
gem 'event-calendar', …
Run Code Online (Sandbox Code Playgroud)

ruby rake rubygems ruby-on-rails

14
推荐指数
2
解决办法
4万
查看次数

无法覆盖Devise密码控制器

在我提交电子邮件给我发送重置密码说明后,我需要将我的Rails应用程序重定向到主页.默认情况下,设计在输入电子邮件后呈现登录表单.

所以我试图改写Devise::PasswordsController并改变它redirect_to,但没有成功.事实上,我认为Rails甚至不参加我的课程.这可能是一个非常愚蠢的错误,但我已经在这里呆了半天没有成功.

我想从这里覆盖密码控制器.

这是我的控制器:

class PasswordsController < Devise::PasswordsController
  protected
  def after_sending_reset_password_instructions_path_for(resource_name)
    root_url
  end
end
Run Code Online (Sandbox Code Playgroud)

routes.rb中:

devise_for :users, :controllers => {:passwords => "passwords"}
devise_for :users, :controllers => {:registrations => "registrations"}
devise_for :users, :controllers => {:sessions => "sessions"}
Run Code Online (Sandbox Code Playgroud)

我想提一下,我在同一个应用程序中覆盖了Devise的注册和会话控制器,它们似乎工作正常.

ruby ruby-on-rails devise

12
推荐指数
1
解决办法
1万
查看次数

如何创建使用on-delete级联约束更新外键的Rails迁移?

我正在使用Rails 4.2.3和PostgreSQL数据库.我想写一个迁移来更新我的一个外键以具有on-delete级联约束,所以我创建了以下内容:

class UpdateForeignKeyAddOnDeleteConstraint < ActiveRecord::Migration
  def change
    remove_foreign_key :my_object_times, :my_objects
    add_foreign_key :my_object_times, :my_objects, on_delete: cascade
  end
end
Run Code Online (Sandbox Code Playgroud)

但是当我运行迁移时,我收到以下错误:

$ rake db:migrate
== 20160525203028 UpdateForeignKeyAddOnDeleteConstraint: migrating ============
-- remove_foreign_key(:my_object_times, :my_objects)
   -> 0.0454s
-- cascade()
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined local variable or method `cascade' for #<UpdateForeignKeyAddOnDeleteConstraint:0x007f82f2c71998>
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:664:in `block in method_missing'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:634:in `block in say_with_time'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:634:in `say_with_time'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:654:in `method_missing'
Run Code Online (Sandbox Code Playgroud)

我该如何编写迁移来更新外键?

migration cascade constraints foreign-keys ruby-on-rails-4

12
推荐指数
1
解决办法
4955
查看次数

如何删除gem路径?

如何删除第二条路径(/home/tom/.gem/ruby/1.8)GEM PATHS:

这是输出$ gem env:

RubyGems Environment:

  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/tom/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
Run Code Online (Sandbox Code Playgroud)

我很感激帮助!

ruby rubygems path

10
推荐指数
2
解决办法
8767
查看次数

错误无法在任何来源中找到i18n-0.7.0

本周六(12月27日),我将项目Rails版本从4.1.5升级到版本4.2.0.我还将Ruby版本从2.1.2升级到2.1.5.

今天,我试图运行一个控制器生成器:bin/rails g controller Clients index我意识到命令不起作用.我收到此错误:

Could not find i18n-0.7.0 in any of the sources
Run Code Online (Sandbox Code Playgroud)

我尝试过其他的命令,如:bin/rake db:migrate,bin/rake和同样的问题.

但是我可以运行服务器:bin/rails s.我也可以浏览网站.

我最后的提交改变了......

ruby ruby-on-rails internationalization

10
推荐指数
2
解决办法
2万
查看次数