Tag: ruby on rail

如何在Devise’注册’页面中添加其他字段?

我对Rails非常陌生并且设计得如此…… 我已经安装了设备并且一切正常,但我想在我的注册页面添加更多字段。 例如,我有一个usertype下拉,我想添加(由Usertype模型填充 – 在测试中工作正常),并且还希望根据用户类型(CC信息等)收集不同的信息。 )有人能指出我的资源或东西。 我尝试重写注册控制器,但没有链接到设计视图或符合DRY原则给我(复制视图)。 提前感谢您的建议。

设计:不需要电子邮件

我不想要使用设备登录电子邮件。 我从config / initializers / devise.rb中删除了电子邮件: config.authentication_keys = [ :login ] 并将此添加到我的用户模型: def email_required? false end 但是,当我尝试保存用户时,我收到此错误: SQLite3::SQLException: users.email may not be NULL 我想改变迁移中的某些内容吗?

Rails质量分配定义和attr_accessible使用

只是想明确什么是质量分配以及如何围绕它进行编码。 质量赋值是使用散列分配许多字段,即类似.. @user = User.new(params[:user]) 为了防止这种情况,你可以使用attr_accessible : attr_accessible :name, :email 因此,像管理员这样的字段无法通过批量分配添加? 但我们可以通过以下方式在代码中修改它: @user.admin = true 那么,如果我们没有attr_accessible那么一切都可以进行大规模分配吗? 最后一个棘手的问题……是否真的即使有一个attr_accessible如“attr_accessible:name”也意味着所有其他字段现在都无法进行质量分配?

使用CarrierWave设置自定义错误消息

我有一个在carrierwave上运行的图像上传应用程序,限制用户只上传所需扩展名的图像’jpg,jpeg,png’我已经在我的上传器中定义了载波波的validation定义为 def extension_white_list %w(jpg jpeg png) end 现在,任何尝试上传具有与所需扩展名不同的扩展名的图像(如上所述)都会导致validation错误 我想自定义validation错误消息 现在错误消息显示为 You are not allowed to upload “” files, allowed types: [“jpg”,”jpeg”,”png”] 谁能帮助我找到这个链接的人提到如何实现这一点 但它有些问题 1. I18n support I dont require to translate the error message using I18n 2. The ‘Key’ to be used I not sure which key to used in YAML for not matching extension […]

延迟作业:如何在开发模式下的每次调用期间重新加载有效负载类

我正在经营一名工作延迟的工人。 当我调用foo方法时,worker打印hello 。 class User def foo puts “Hello” end handle_asynchronously :foo end 如果我对foo方法做了一些更改,我必须重新启动worker才能反映更改。 在开发模式中,这可能变得非常烦人。 我试图找到一种方法来为每个请求重新加载有效载荷类(在本例中为User类)。 我尝试使用Monkey修补DelayedJob库,以在有效负载方法调用之前调用require_dependency 。 module Delayed::Backend::Base def payload_object_with_reload if Rails.env.development? and @payload_object_with_reload.nil? require_dependency(File.join(Rails.root, “app”, “models”, “user.rb”)) end @payload_object_with_reload ||= payload_object_without_reload end alias_method_chain :payload_object, :reload end 这种方法不起作用,因为需要在调用之前重新加载使用require_dependency注册的类,而我还没弄清楚如何执行它。 我花了一些时间阅读调度程序代码,以弄清楚Rails如何为每个请求重新加载类。 我无法找到重新加载代码。 以前有人试过这个吗? 你怎么建议我继续? 或者你有任何指针来查找Rails类重载代码?

STI和form_for问题

我使用单表inheritance来管理不同类型的项目。 楷模: class Project < ActiveRecord::Base end class SiteDesign < Project end class TechDesign < Project end 从projects_controller编辑动作: def edit @project = Project.find(params[:id]) end 查看edit.html.erb: {:controller => “projects”,:action => “update”}) do |f| %> … 更新projects_controller的操作: def update @project = Project.find(params[:id]) respond_to do |format| if @project.update_attributes(params[:project]) @project.type = params[:project][:type] @project.save flash[:notice] = ‘Project was successfully updated.’ […]

CarrierWave如何在给定的URL存储文件

我通过典型的ORM设置使CarrierWave正常工作并通过表单上传。 我想弄清楚如何在表单提交上下文之外使用CarrierWave。 例如,当用户注册时,我想抓住他们的gravatar并将其存储在CarrierWave中。 这是我拥有的,它不起作用: gravatar_url = “http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon” uploader = ImageUploader.new uploader.store! gravatar_url 也没有错误。 我一直在寻找网络,但一直无法找到解决方案。

Rails / Devise – 通过json请求创建新用户

我想通过JSON进行新的用户注册,但是我收到了无效的真实性令牌错误。 我想不要为所有控制器打开伪造检查。 有关如何覆盖registrationController执行此操作的任何建议? 这是我的代码: class Api::MobileRegistrationsController < Devise::RegistrationsController skip_before_filter :verify_authenticity_token respond_to :json def create super end end 路线: Whitney::Application.routes.draw do resources :apps devise_for :users namespace :api do resources :tokens, :only => [:create, :destroy] resources :MobileRegistrations, :only => [:create] end 我收到一个错误: Routing Error uninitialized constant Api::MobileRegistrationsController

重新加载rails控制台

关于Rails控制台的使用,当我对模型进行一些更改时,是否每次都需要重新加载rails控制台以使该更改反映出来? 例如,我的原始代码如下: class Article true validates :body, :presence => true end 稍后,我想添加一些额外的属性,如下所示。 class Article true validates :body, :presence => true def long_title “#{title} – #{published_at}” end end 是否需要运行命令“reload!” 每次都可以做“long_title”方法调用? 否则,我将收到错误,因为该属性尚未定义。 为什么我们需要手动执行?

在上一个会话中运行rake db:migrate之后,Rails服务器在启动后退出

在上一个会话中运行rake db:migrate之后,我遇到启动rails服务器的问题。 我已经安装了设计并在我的应用程序中设置了一个新的数据库,这似乎运行正常,但我重启我的应用程序后无法启动新的服务器。 有什么想法吗? Taylors-MacBook-Pro:pinteresting taylorburton$ rails s => Booting WEBrick => Rails 4.2.0 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server Exiting /Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/devise-3.3.0/lib/devise/rails/routes.rb:457:in `ensure in with_devise_exclusive_scope’: undefined method `merge!’ for # (NoMethodError) from /Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/devise-3.3.0/lib/devise/rails/routes.rb:457:in `with_devise_exclusive_scope’ from /Users/taylorburton/.rvm/gems/ruby-2.0.0-p598/gems/devise-3.3.0/lib/devise/rails/routes.rb:248:in `block (2 levels) in devise_for’ […]