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模块,应该包含很多类
module A
class First
#somemethods
end
class Second
#somemethods
end
class Third
#somemethods
end
end
Run Code Online (Sandbox Code Playgroud)
我想在rails中做的是将这些类拆分成几个文件,将这个庞大的模块拆分成几个相关文件的最佳做法是什么?
我正在使用Nginx作为网络服务器,并希望实现一种浏览器缓存方法,以便用户在本地保存静态未更改文件的副本,并仅下载已更改的文件.其中一个建议是使用文件时间戳来找出已更改的文件并仅刷新它们,但在我的情况下这是不可能的,因为在每次新部署之后都会创建整个Web应用程序的新版本以及所有文件的时间戳更改.
我研究了一下ETag标题,它似乎是一个非常好的解决方案,但我发现Etags尚未得到Nginx的正式支持.
有没有办法在Nginx上实现Etags或任何替代解决方案?
我想添加一个动态生成的文本.有没有办法在Ruby中为现有PDF添加水印?
我在 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 默认页面:
pages/api/auth/[...nextauth].js:NEXTAUTH_URL=https://example.vercel.app (production)
NEXTAUTH_URL=http://localhost:3000 (development)
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?我错过了什么吗?
我最近一直试图在服务器上运行我的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) 在我提交电子邮件给我发送重置密码说明后,我需要将我的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的注册和会话控制器,它们似乎工作正常.
我正在使用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)
我该如何编写迁移来更新外键?
如何删除第二条路径(/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)
我很感激帮助!
本周六(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.我也可以浏览网站.