Tag: ruby on rail

Rails + Devise:如何覆盖before_filter“authenticate_user!”的重定向

我在Rails 3和最新版本的Devise上,我在AdminController有一个beforefilter来authenticate_user! 我需要在重定向之前为request.referrer存储一个会话变量,以便我可以在尝试继续时将其发送回/ admin页面。 我会在哪里覆盖authenticate_user! ? 我想做的是这个,但我不知道在哪里定义它: def authenticate_user! session[:return_to] = request.request_uri super end

图边缘轨道

我最近在尝试在rails中建立双向关系时发现了这一点( http://www.dweebd.com/sql/modeling-bidirectional-graph-edges-in-rails/ ) class Befriending :User belongs_to :recipient, :class_name => :User after_create do |b| BefriendingEdge.create!(:user => b.initiator, :befriending => b) BefriendingEdge.create!(:user => b.recipient, :befriending => b) end end class BefriendingEdge < ActiveRecord::Base belongs_to :user belongs_to :befriending end class User :befriending_edges, :source => :user has_many :befriendings, :through => :befriending_edges, :source => :befriending end 但我只是不太明白它是如何工作的。 任何人都可以帮我解释一下。 它看起来像一个double […]

有什么能解释Rails的API文档吗?

我知道http://api.rubyonrails.org/是为了解释ruby on rails的方法等,但是我需要一些东西来解释我的解释。 这似乎是一个很好的资源,我想了解它或者是时候放弃了。

使用Devise在具有子域的多租户站点上自动登录用户

在我的应用程序中,客户在mysite.com上注册。 注册完成后,会为他们提供一个站点,例如customer.mysite.com。 我正在使用Devise,并希望立即将客户登录到他们的网站。 我正在使用多租户,如RailsCast中所述。 我不太清楚如何解决这个问题。 将sign_in添加到after_sign_up_path_for def的标准解决方案无效。 我假设它试图将客户登录到mysite.com,而不是customer.mysite.com。 我包括我的after_sign_up_path_for def所以你可以看到我正在尝试的东西没有成功。 我的Devise实现中的资源是User,用户拥有Site。 RegistrationsController: def after_sign_up_path_for(resource) # Site.current_id = resource.site.id sign_in resource, bypass: true “http://#{resource.site.host}.#{ENV[‘BASE_HOST’]}/sites/#{resource.site.id}/edit” # edit_site_url end 任何帮助表示赞赏。

在另一页上设计登录表单

我想在我的主页上添加一个设计登录表单(模型称为home) 我已经找到了这个,但坚持放置某些位并工作! Show a devise log in form in another page Sign in session_path(resource_name) do |f| -%> “shared/devise_links” %> 和(不知道放在哪里) module ContentHelper def resource_name :user end def resource @resource ||= User.new end def devise_mapping @devise_mapping ||= Devise.mappings[:user] end end 我的设计是’成员’,所以任何帮助都会很棒:)干杯

防止用户在Rails中多次投票

我在博客模型中设置了一个简单的评级系统。 我使用自定义方法来提高评级,这在博客db中是整数。 def increase @post = Post.find(params[:id]).increment!(:rating) if logged_in? current_user.increment!(:votes) end flash[:notice] = “Thanks for rating” redirect_to posts_url end 现在,我可以按照自己的意愿投票多次,这当然是一场灾难。 用户可以多次投票并推动计数方式。 我如何做到这一点,以便投票提交按钮在提交一次后消失。 我想为评级制作一个单独的模型并使用自定义令牌,但对于一个简单的应用程序来说似乎不必要地复杂化。 有帮助吗? 塞特希

rails,为新路由添加参数

new操作通常不需要参数,因为它从头开始创建新资源。 在我的应用程序中,每当我创建某种类型的资源时,我都需要提供一个模板,这是另一book的ID。 所以我的new路线总是有一个参数。 我不知道如何将这个事实表示到routes.rb文件中。 因为我甚至不知道它是否可行,只是在它不是的情况下,那么我将创建一个new_wp,一个“new with parameter”动作。 我试着把它添加到我的 resources :books, :only => [:edit, :update, :show, :new] do member do get ‘new_wp/:template_id’, :action => ‘new_wp’ end end 但是rake路线说这不是我想要的: GET /books/:id/new_wp/:template_id(.:format) books#new_wp 也就是说,它有两个参数。

找不到具有’id’= sign_out的用户

我正在使用rails中的设计,我现在无法注销我的用户。 当我使用users / log_out页面时,它会出现以下错误: ActiveRecord::RecordNotFound in UsersController#show Couldn’t find User with ‘id’=sign_out 无论如何,这是我的用户控制器: class UsersController < ApplicationController def new @user = User.new end def create @user = User.new(user_params) if @user.save redirect_to users_path else render 'new' end end def index @users=User.all end def edit @user = User.find(params[:id]) end def destroy @user = User.find(params[:id]) @user.destroy redirect_to users_path […]

在超时注销之前向用户显示消息

我们有一个使用Devise进行身份validation的Rails 4应用程序。 我们想: 在用户自动过期前1分钟向用户发送消息 让用户单击此消息上的按钮以继续他/她的会话 自动将用户发送到登录页面,并在他/她的会话到期时在那里显示消息 是否有任何Devise扩展或内置组件可以帮助我们实现这一目标,还是我们需要推出自己的解决方案? 如果我们自己开始,有没有任何好的教程来完成这个或关于我们可能会与之交互的Devise钩子的文档?

设计:未定义的方法`user_signed_in?’ for ApplicationController:Class

我在使用Rails 3.1.1和Ruby 1.9.2时遇到了上述错误。 我花了最后一小时看,我找到的主要内容是: ApplicationController中的clear_helpers可能导致帮助程序无法加载。 我的代码没有使用它,我不相信我安装的gem也是。 缺少devise_for中的devise_for。 我有devise_for :users 在我的Users模型中缺少’database_authenticatable’。 我有我的users.rb: 设计:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable 我的行为完全匹配除了signed_in? :user之外的电子邮件线程中描述的signed_in? :user signed_in? :user也不适合我。 但是, Devise.mappings确实显示了用户映射。 关于什么可能出错的任何想法? 即使是对current_user的破解也会对我有所帮助,因为我必须尽快运行一些function。