Tag: 设计

添加索引到电子邮件列的罪魁祸首unit testing失败

我是设计和导轨的新手,我只是将设计与我的示例应用程序集成在一起。 我注意到在创建用户模型后,我的所有unit testing都失败了。 我试着缩小它,发现即使为user_test.rb生成的断言“真相”也失败了: ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: \ column email is not unique: INSERT INTO “users” (… 一旦我注释掉add_index … # add_index :users, :email, :unique => true …并重新运行rake db:test:load使用ruby -I test test/unit/user_test.rb rake db:test:load并重新运行测试。 有没有人经历过这个?

设计 – 自定义用户编辑页面

目前使用devise&rails 3,有一个用户编辑页面:/ users / edit 我想将其拆分为更好的用户界面,例如: /account/settings /account/password /account/notices /account/disable 另外,当用户想要更改密码时,我想要求用户输入他们当前的密码。 有了设计,为了实现这一点,这需要一个新的控制器,还是可以用路由处理? 此外,目前,编辑页面位于此处:app / views / devise / registrations 你建议在那里添加这些页面吗? 或者在/ app / views / users中? 谢谢

如何为Ruby on Rails配置Devise以将电子邮件和密码存储在除用户模型之外的其他位置?

我想将电子邮件存储在单独的表中,并允许用户保存多封电子邮件并使用其中任何一封登录。 我还想将密码存储在另一个表中。 如何配置Devise以在其他地方存储身份validation信息? 最糟糕的情况是,如果我只是要入侵它,是否有一个生成器只是将所有内容移植到应用程序? 我注意到视图中有一个生成器。 谢谢。

如何在使用API​​密钥时跳过Devise身份validation?

我正在我的应用程序上使用Devise,并希望创建一个全局API密钥,可以访问任何人的帐户的JSON数据,而无需登录。 例如,假设我的API密钥是1234 ,我有两个用户创建了两个不同的餐厅。 用户1 – 餐厅1(/餐厅/ 1) 用户2 – 餐厅2(/餐厅/ 2) 我打开一个全新的浏览器,没有登录任何东西,我传入我的URL …/restaurants/2.json?api_key=1234 ,我应该能够访问该餐厅的JSON数据,而无需登录- 作为用户2 什么是最好的方法呢? 我已经按照Railscast#352保护API,所以我可以通过传入API密钥来访问JSON的东西,但我必须登录才能看到任何内容。 编辑1:使用CanCan 我应该提一下,我也在使用CanCan作为角色,但不确定在这种情况下是否会扮演任何角色(双关语)。 编辑2:使用API​​版本控制 我按照Railscast#350和#352教你如何创建REST API版本以及如何使用API​​密钥保护它。 这是我的controllers / api / v1 / restaurants / restaurants_controller.rb的样子: module Api module V1 class RestaurantsController < ApplicationController before_filter :restrict_access respond_to :json def index respond_with Restaurant.all end def show respond_with Restaurant.find(params[:id]) end private def […]

Rails使用Devise显示在线用户

我想在Who的在线模块中显示我的在线用户。 我正在使用Devise来管理我的用户。 我到处搜索,但我没有任何想法来管理它。 你有线索吗? 提前致谢

如果用户未经授权,如何使用Devise发送CORS头(401响应)

我正在开发一个应用程序,其中服务器和api消费客户端位于不同的域下,所以我想使用CORS 。 为此,我必须在服务器响应中设置相应的http标头: def cors_set_access_control_headers headers[‘Access-Control-Allow-Origin’] = ‘http://localhost’ headers[‘Access-Control-Allow-Methods’] = ‘POST, GET, OPTIONS’ headers[‘Access-Control-Allow-Headers’] = ‘*, X-Requested-With, X-Prototype-Version, X-CSRF-Token, Content-Type’ headers[‘Access-Control-Max-Age’] = “1728000” end 此方法用作ApplicationController的before_filter 。 对于某些资源,用户必须经过身份validation和授权。 请求通过XHR / Ajax完成。 因此,如果用户未经过身份validation, Devise将向客户端发送401响应,而不是重定向到登录页面。 但是用于设置CORS头的filter不用于该响应。 因此,401响应不会发送给客户端。 我想在客户端捕获并使用401响应。 目前我使用的解决方法是不使用Devise身份validation方法,而是使用自定义身份validation代码段: def authenticate_cors_user if request.xhr? && !user_signed_in? error = { :error => “You must be logged in.” } render params[:format].to_sym […]

Ruby on Rails:按月分组博客文章

嗨伙计们。 我用通常的CRUD动作创建了一个简单的博客应用程序。 我还在PostController中添加了一个名为“archive”的新动作和一个相关视图。 在这个视图中,我想带回所有博客文章并按月分组,以这种格式显示它们: March Hello World Blah blah Nothing to see here Test post… Febuary My hangover sucks … etc … 我不能为我的生活找出最好的方法来做到这一点。 假设Post模型具有通常的title , content , created_at等字段,有人可以帮我解决逻辑/代码吗? 我对RoR很新,所以请耐心等待:)

Rails3 + Devise:何时在devise_for和嵌套资源中嵌套资源

我什么时候应该在devise_for块中嵌套路由? 请举一两个例子来说明用例。 (路线#1) 如果:foo_object与:users so :user has_one :foo_object相关联,我是否需要嵌套:foo_object :users ? (路由#2) :users是设计:users模型。 路线#1: devise_for :users resource :foo_object 路线#2: devise_for :users resources :users do resource :foo_object end

Rails 3 – 使用OmniAuth设计 – 登录后重定向转到/ users / sign_in

我使用omiseuth设计用于登录Facebook用户。 我希望在登录之前登录到他们所在的页面后重定向它们。 我用过了 def after_sign_in_path_for(resource_or_scope) store_location = session[:return_to] clear_stored_location (store_location.nil?) ? “/” : store_location.to_s end 在我的应用程序控制器中,并使用此代码创建了sessions_helper def deny_access store_location redirect_to new_user_session_path end def anyone_signed_in? !current_user.nil? end private def store_location session[:return_to] = request.fullpath end def clear_stored_location session[:return_to] = nil end 并解决问题,重定向到“服务/”,我有Facebook和其他平台认证的逻辑,我已经使用了 skip_before_filter :store_location 在服务和其他控制器,我不会存储为位置。 Q1我现在遇到的问题是当我使用ajax并在模态窗口中呈现登录表单时,当用户成功登录时,它会被重定向到/ users / sign_in /。 我没有用户控制器,并试图创建一个sessions_controller.rb并添加skip_before …但它不起作用。 这是我的sign_in路线 new_user_session GET /users/sign_in(.:format) {:action=>”new”, […]

如何使用Devise向Rails中的新注册用户发送欢迎电子邮件?

我正在使用Devise on Rails,我想知道是否有一个钩子或filter可用于向Devise的用户注册过程添加一些代码,并在创建帐户后向用户发送欢迎电子邮件。 没有设计就会有这样的事情…… respond_to do |format| if @user.save Notifier.welcome_email(@user).deliver # <======= …