Tag: ruby on rail

如何编写此范围以在嵌套模型上搜索属性? (再次)

好, 我今天早些时候问了这个问题 如何编写范围以在嵌套模型上搜索属性? 并在Rails中搜索嵌套模型中的属性得到了很好的答案。 在上一个问题中,写了一个范围,发现所有患者入院时的出院时间为零(谢谢tjwallace)。 class Patient nil) end 我现在要做的是写一个名为:discharge的范围,它会进行一次搜索,返回所有至少有一次入院且放电时间不为零的患者。 我试过以下几点; scope :discharged, includes(:admissions).where(‘admissions.discharge_time ?’, nil) 但是这没有返回结果(并且数据库中确实存在应该通过正确编写的搜索找到的患者)。 任何帮助将不胜感激。

为什么我为此devise_group调用获取NoMethodError?

我正在使用设计3.5.2,ruby 2.2.2,rails 4.2.3 class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. protect_from_forgery with: :exception devise_group :user, contains: [:manager, :employee] end 我的理解是Devise应该自动加载这些助手 ,我应该能够在ApplicationController中使用它们而不做任何特殊的事情。 我尝试使用’rails s’运行应用程序,我收到此错误: multi-user-role-devise / app / controllers / application_controller.rb:6:in ‘: undefined method devise_group’for ApplicationController:Class(NoMethodError)from / home / me / ror-code / multi-user -role-devise / app / controllers / application_controller.rb:1:在`’….等 […]

设计身份validation未定义方法’to_sym’?

我试图使用设计针对LDAP活动目录设置身份validation系统。 (按照教程http://wiki.phys.ethz.ch/readme/devise_with_ldap_for_authentication_in_rails_3 我完全按照指示,当我尝试运行应用程序时,我得到以下错误: undefined method `to_sym’ for #<ActiveModel::MassAssignmentSecurity::WhiteList:0x2a4abd50 我甚至不知道to_sym在to_sym ,因为它没有告诉我! 任何人都知道这个的原因或至少如何找到包含这一行的文件? * ** * ** * 更新 * ** * ** * user.rb模型: class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable devise :ldap_authenticatable, :rememberable, :trackable, # Setup accessible (or protected) attributes for your […]

使用to_param为包含分隔符的字段使用Rails RESTful资源

我希望我的Rails 2.3.2应用程序响应并生成如下所示的URL: /websites/asd.com /websites/asd.com/dns_records/new 在我的config / routes.rb中,我有: map.resources :websites, :has_many => :dns_records map.resources :dns_records, :belongs_to => :website 然后我可以访问以下资源: /websites/1 /websites/1/dns_records 通过修改我的网站模型,我可以生成更好的URL,如下所示: class Website < ActiveRecord::Base def to_param domain_name end … end # app/views/websites/index.erb # Produces a link to: /websites/example_without_periods_in_name 但是,对于包含“。”的域名。 人物,Rails变得不开心。 我相信这是因为’。’ character在ActionController :: Routing :: SEPARATORS中定义,它列出了用于拆分URL的特殊字符。 这允许你做像/websites/1.xml这样的东西。 那么,是否有一种干净的方式允许’。’ RESTful URL中的字符? 我已经尝试重新定义ActionController :: Routing :: […]

undefined方法`authenticate_user! Devise / Rails 4中的Api :: PostsController

我的项目中有以下路线: root ‘home#index’ namespace :api, defaults: { format: :json } do devise_for :users, controllers: { sessions: “api/sessions” } resources :posts end 用户模型: class User < ActiveRecord::Base has_many :posts, dependent: :destroy has_many :comments, dependent: :destroy validates :name, presence: true devise :database_authenticatable, :rememberable end 会话控制器: class Api::SessionsController < Devise::SessionsController def create @user = User.find_for_database_authentication(email: params[:user][:email]) if @user […]

public_id在cloudinary和carrierwave之间不匹配

我正在使用CarrierWave和Cloudinary将多张图片上传到我的博客post。 我从浏览器上传它们。 使用post表单中的文件字段会发生这种情况。 提交表单时,会为每个图像创建一个picture实例,并将图像上传到Cloudinary。 def create @post = Post.new(post_params) if @post.save if params[:images] params[:images].each do |image| @post.pictures.create(image: image) Cloudinary::Uploader.upload(image) end end end end 我使用的ImageUploader几乎是默认的(包含cloudinary插件的exept) class ImageUploader < CarrierWave::Uploader::Base include Cloudinary::CarrierWave storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end 现在,图像正在保存到我的服务器,图像正在上传到cloudinary。 但不知何故, public_id’s永远不会匹配。 有谁知道为什么不呢? 当我调用Cloudinary::Uploader.upload(image)时是否创建了新的public_id ?

Devies – 登录后使用’POST’请求路由到行动

在我的Rails应用程序中,我使用Devise进行用户身份validation。 我试图设置它,以便控制器的create操作有一个before_action :authenticate_user! filter,但我遇到了一个问题 – Devise after_sign_in_path_for控制器操作的默认行为似乎只能重定向到带有’get’动词的路由,但create action依赖于’post’。 如何设置它以便重定向指向正确的操作? 的routes.rb resources :posts, only: [:index, :new, :create] posts_controller.rb class PostsController [:create] def new @post = Post.new end def create @post = current_user.posts.new(post_params) @post.save redirect_to posts_summary_path end end sessions_controller.rb def after_sign_in_path_for(resource) request.env[‘omniauth.origin’] || stored_location_for(resource) || posts_path end 从我的佣金路线 posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create 因此,要求用户在new页面上提交表单后登录,但不是在登录后重定向到并完成create操作,Devise将用户路由到index视图。 如果我删除index路由,我得到错误No […]

Devise中的LoadError :: RegistrationsController #create(无法加载此类文件–bcrypt_ext)。 为什么我会收到此错误?

我正在使用ruby 2.2.4。 我在安装Devise gem之后尝试注册时遇到此错误。 我曾经使用过ruby 2.1.5时从未遇到过这个错误。 ruby版本是错误的原因吗? 更新:这是我的gemfile的样子,我正在使用Windows 7 Professional 64位 source ‘https://rubygems.org’ gem ‘rails’, ‘4.2.5.1’ gem ‘sqlite3’ gem ‘sass-rails’, ‘~> 5.0’ gem ‘uglifier’, ‘>= 1.3.0’ gem ‘coffee-rails’, ‘~> 4.1.0’ gem ‘jquery-rails’ gem ‘turbolinks’ gem ‘jbuilder’, ‘~> 2.0’ gem ‘simple_form’, ‘~> 3.2’, ‘>= 3.2.1’ gem ‘country_select’, ‘~> 2.5’, ‘>= 2.5.1’ gem ‘devise’, ‘~> 3.5’, ‘>= […]

在错误登录进入登录页面后,按下正确登录按钮

我正在使用设计,我面临一个有趣的用例。 在页面: http://localhost:3000/users/sign_in ,如果我输入正确的登录ID和密码,我登录该网站。 现在,如果我按回按钮,它表示你已经登录了。 但在页面: http://localhost:3000/users/sign_in ,我输入错误的登录ID和密码,它给出错误,并再次保留在此页面。 我输入正确的登录ID和密码,我登录该网站。 现在,如果我按下后退按钮,它将进入登录页面。 我该怎样克服这一点

Rails Concerns,Scopes,Devise,User.current和current_user

我正在考虑根据状态显示记录。 如果您已登录,则可以看到未批准的记录,公众只能查看已批准的记录。 module Approved extend ActiveSupport::Concern included do if User.current && !User.current.nil? scope :approved, -> { where(“#{self.table_name}.status_id IN (1,2,3)”) } else scope :approved, -> { where(“#{self.table_name}.status_id IN (1)”) } end end end 我正在使用Thread来设置当前用户。 def self.current=(user) Thread.current[:current_user] = user end def self.current Thread.current[:current_user] end 在application_controller中,我有一个before_action调用set_current_user。 def set_current_user User.current = current_user end 当我注销未经批准的记录时,仍会从查询中提取。 它似乎跳过了这个问题。