如何在Rails控制器中动态设置cookie名称

我想在我的rails应用程序中动态设置cookie名称。 我可以像这样设置cookie: cookies[:users_id] = current_user.id 我想动态设置cookie名称。 我试过这样的,它不起作用: cookies[:’users_id_#{current_user.id}’] = current_user.id 这怎么可能?

这类路线的最佳做法是什么?

我有一个belongs_to三个用户(客户,员工和qa)的Job模型。 创建作业时,客户设置为current_user ,但employee和qa用户从无人认领的作业池中选择其作业。 我目前实现此方法的方法如下: match ‘jobs/:id/assign/:type/:user_id’ => ‘jobs#assign’ ,其中assign方法带有对params[:type]的case语句。 因此,例如, jobs/1/assign/qa/1将用户1指定为作业1的qa。 这有效,但看起来很草率,我想用更干净的东西取而代之。 对于像这样的情况,有一个共同的约定吗? 编辑:用户可以同时拥有员工和qa角色。 这就是让我感到强迫进入如此复杂的路线的原因。 class User ‘Job’, :foreign_key => ‘customer_id’ has_many :assigned_jobs, :class_name => ‘Job’, :foreign_key => ’employee_id’ has_many :reviewed_jobs, :class_name => ‘Job’, :foreign_key => ‘qa_id’ class Job ‘User’, :foreign_key => ‘customer_id’ belongs_to :employee, :class_name => ‘User’, :foreign_key => ’employee_id’ belongs_to :qa, :class_name => […]

通过共同的关联数排序,即使没有(轨道)

我正在研究一个与此问题有着非常相似的窘境的项目: 按共同关联数量排序(Rails) 问的提问者(霓虹灯)写道, 背景:我有post和用户,都有很多社区。 目标:对于任何给定的用户,我想返回一组post,按照post与用户共有的社区数量排序(更多社区的post更高) 不幸的是,该解决方案仅包括至少有一个共同社区的post。 我的quandry需要包括按共同社区数量排序的所有post。 扩展目标:结果必须是AREL对象, 所有post按公共社区的数量排序,包括与用户共同拥有零社区的post(共同拥有更多社区的post更高)。

使用activerecord发出请求,仅从组中获取用户,而不从其他用户获取

我正在尝试从少数组中获取用户(使用给定的ID)并从其他组中排除用户。 我尝试过类似的东西: User.joins(:groups).where(groups: {id: [“8939″,”8950”]}).where.not(groups: {id: 8942}).map(&:id) User Load (0.9ms) SELECT “users”.* FROM “users” INNER JOIN “groups_users” ON “groups_users”.”user_id” = “users”.”id” INNER JOIN “groups” ON “groups”.”id” = “groups_users”.”group_id” WHERE “groups”.”id” IN (8939, 8950) AND “groups”.”id” != $1 [[“id”, 8942]] => [119491, 119489, 119490, 119492, 119488, 119484, 119483, 119491, 119482] 但这不正确 8942组中的用户。 Group.find(8942).users.pluck(:id) Group Load (0.4ms) […]

使用FactoryGirl创建的记录在Controller中不可用

我的一项测试已经开始失败。 它以前工作并在浏览器中手动执行相同的操作显示该function正在工作。 我创建了要测试的记录,如下所示: will = FactoryGirl.create(:user, profile: “security of the internet”, first_name: “will”) 为了调查,我添加了一个 binding.pry 打电话到我的控制器。 该操作搜索用户。 如果我做: User.all 在pry提示符下,没有显示用户,结果为空。 如果我用pry进入实际测试,User.all会显示预期的记录。 可能是什么原因造成的?

formValidation jquery插件在rails上提交一个空白的设计注册表单

我正在为我的Devise注册表单使用formValidation查询插件。 该插件来自formValidation.io 。 我可以让表单注册有效或无效的条目,但它总是提交一个空白表格。 由于某种原因,表单显示它已填写,但我不断收到错误,说必填字段不能为空。 当我查看跟踪时,注册信息正在那里注册……但它在线路的某处丢失了。 跟踪: Started POST “/users” for ::1 at 2015-05-09 20:11:21 -0700 source=rack-timeout id=b008bd12bcf5f1f2687f7e216cf42136 timeout=20000ms service=1750ms state=active Processing by Users::RegistrationsController#create as HTML Parameters: {“utf8″=>”✓”, “authenticity_token”=>”uzEtfaHhjFg5M1aRL6shfpMxA3/Wbf/CVm5R1cU+NDNjrOx2nbnlkfQ9t+SlvKTk2Lm+F1r1rkvLfauEtFKRtA==”, “firstname”=>”fred”, “lastname”=>”flintstone”, “email”=>”wilma@bedrock.com”, “pw1″=>”dino123”, “pw2″=>”dino123”, “commit”=>”Create Account”} (0.3ms) BEGIN User Exists (0.6ms) SELECT 1 AS one FROM “users” WHERE LOWER(“users”.”email”) = LOWER(”) LIMIT 1 (0.2ms) ROLLBACK […]

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时迁移时获取’undefined method`to_sym’

我正在尝试设置Pageflow。 最后,我设法创建了数据库并安装了页面流。 我可以运行rails s但是我的Migrations are pending; run ‘bin/rake db:migrate RAILS_ENV=development’ to resolve this issue. Migrations are pending; run ‘bin/rake db:migrate RAILS_ENV=development’ to resolve this issue. 在我的浏览器中。 无论如何,键入bundle exec rake db:create db:migrate会给我这个错误: == AddDeviseToUsers: migrating =============================================== — change_table(:users) rake aborted! StandardError: An error has occurred, all later migrations canceled: undefined method `to_sym’ for {:null=>false, :default=>””}:Hash/Users/user/.gem/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:671:in `type_to_sql’ […]

如何使用具有默认排序的依赖destroy子目录销毁ActiveModel实例?

在Rails 4.0中,我有2个ActiveRecord类: class Sequence < ActiveRecord::Base has_many :steps, dependent: :destroy end 和 class Steps { order(‘order ASC’) } end 当我调用mySequence.destroy我收到此错误: PG :: SyntaxError:错误:“order”或其附近的语法错误第1行:…步骤“WHERE”步骤“。”sequence_id“= $ 1 ORDER BY order ASC ^:SELECT”steps“。* FROM”steps“WHERE “steps”。“sequence_id”= $ 1订购ASC 当我删除默认范围时,错误消失了,但我显然必须在我的代码中按顺序排序。 我确实尝试像这样定义关联,并省略default_scope语句: class Sequence < ActiveRecord::Base has_many :steps, dependent: :destroy, order: 'order ASC' end 但它抛出了同样的错误。 还有其他人有这个问题吗? 这是Rails中的错误吗? 我想在孩子们的destroy sql语句中不需要排序。

使用javascript_include_tag在rails 3.2.8引擎中执行ExecJS :: RuntimeError

我们将两个轨道3.2.8引擎放在一个轨道应用程序中。 问题是ExecJS不喜欢布局文件中javascript_inclide_tag的命名空间。 这是导致错误的标记: 这里authentify是rails引擎名称。 错误是: ExecJS::RuntimeError in Authentify/sessions#new Showing C:/D/code/rails_proj/engines/authentify/app/views/layouts/sessions.html.erb where line #6 raised: (in C:/D/code/rails_proj/engines/authentify/app/assets/javascripts/authentify/sessions.js.coffee) Extracted source (around line #6): 3: 4: Login 5: 6: 7: 8: 9: 如果我们删除名称空间authentify( ),则ExecJS错误消失并且rails应用程序正常工作。 使用js标记的另一个rails引擎存在相同的错误。 我们正在使用Windows环境。 什么可能导致错误? 谢谢您的帮助。 更新: 在engine.rb for authentify中,每个js库都列为: initializer “Authentify precompile hook”, :group => :all do |app| app.config.assets.precompile += [ ‘authentify/application.css.scss’, ‘authentify/layout.css.scss’, ‘authentify/login.css.scss’, ‘authentify/paginate.css.scss’, […]