Tag: ruby on rails 4

是puma唯一的multithreading导轨4 http服务器?

我已经将我们的堆栈转换为Rails 4(是的!) 我希望利用线程安全的代码。 Puma工作起床,停止它似乎是一个不同的问题:( Puma是唯一的multithreading导轨吗? Thin -> EventMachine Unicorn -> Forking Puma -> multi-threaded Mongrel -> don’t care Webbrick -> don’t care

采用自定义`redirect_to`方法的缺点和支持

为了在每次params包含redirect_uri值时将用户重定向到自定义网页,我正在评估以这种方式使用自定义redirect_to方法 (通过@kiddorails ): class ApplicationController < ActionController::Base def custom_redirect_to(url) redirect_to (params[:redirect_uri].present? ? params[:redirect_uri] : url) end end def create @post = Post.new(params) if @post.save custom_redirect_to @post else render 'new' end end 但是,我想知道可能的缺点并获得采用上述解决方案的支持。

Rails 4嵌套资源/路由……差不多……?

我有三个模型 – 用户,制造商和生产线。 我需要用户拥有多个制造商,并且每个制造商都有多条生产线。 我终于将行最终拉到_form上的manufacturer_id,但现在它没有保存’line’的’name’,只保存id。 它会将’name’保存为nil,就像它没有从表单中传递名称一样。 我已经阅读了关于此的标准文档,我不能为我的生活让它工作。 它一直挂在控制器的最后创建阶段,我感觉我在窗体和控制器的路径上有很多错误。 希望有人能够轻松对待我并帮助我让整个shebang工作。 user.rb class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :manufacturers end manufacturer.rb class Manufacturer < ActiveRecord::Base belongs_to :user has_many :lines end line.rb class Line < ActiveRecord::Base belongs_to :manufacturer end lines_controller.rb class LinesController < ApplicationController before_action :set_line, only: [:show, :edit, :update, :destroy] before_filter […]

集成测试:`assert_select’a ‘`对于分页页面失败

我有很多集成测试,看起来像: first_page_of_users = User.page(1) # Using kaminari for pagination. first_page_of_users.each do |user| assert_select ‘a[href=?]’, user_path(user) end 这些测试失败并显示错误消息,例如: Expected at least 1 element matching “a[href=”/users/1″]”, found 0.. 我将puts @response.body添加到测试中,以查看它响应的代码。 对于响应正文中包含的所有用户,它具有正确的href,例如href=”/users/75938613″ 。 但是, /users/后面的数字要高得多,并且“users1”确实不存在(不仅仅是url不存在,而且整个记录不在该页面上)。 如果我确保只有几个固定装置,以便不适用分页,则测试通过。 这让我觉得好像有了分页, first_page_of_users = User.page(1)应用的顺序与first_page_of_users.each do |user|的顺序不同first_page_of_users.each do |user| assert_select ‘a[href=?]’, user_path(user)期望… 可能导致此错误的原因是什么? 它适用于我的应用程序的不同页面和模型。 更新:对于另一个模型,即使我尝试 Organization.all.each do |org| puts @response.body assert_select ‘a[href=?]’, organization_path(org) […]

Ruby / Rails – 访问params值

我假设一个新手问题但是我们走了:我有以下参数: {“utf8″=>”✓”, authenticity_token”=>”………”, “import”=> {“csv”=> #<ActionDispatch::Http::UploadedFile:0x007fb59092a660 @content_type="text/csv", @headers="Content-Disposition: form-data; name=\"import[csv]\"; filename=\"Users.csv\"\r\nContent-Type: text/csv\r\n", @original_filename="DemoUsers.csv", @tempfile=#>, “datatype”=>”users”}, “commit”=>”Import”, “action”=>”create”, “controller”=>”imports”} 在我的代码中,我需要将@tempfile的值@tempfile局部变量,但我无法弄清楚如何。 😉

根据select(Rails)分别获取并显示数据库行中的所有值

嗨,我被困在制作发票申请表。 我想有一个选项,您可以从customers表中添加现有客户,并将这些值添加到发票中。 我想要显示的值是company_name , vat_number和iban_number 。 我试过这样做: 但显然这只能得到company_name的值。 我尝试使用collection.select但是它也只获得数据库行的一个值而不是全部3个值。 我希望能够从仅包含company_name的列表或表行中进行选择,但是当我单击该company_name时,它还必须显示vat_number和iban_number (单独地,在页面的不同部分)。 我的发票/ _form中的这样的东西是最佳的: 这是我的发票控制器: class InvoicesController < ApplicationController before_action :set_invoice, only: [:show, :edit, :update, :destroy] before_action :authenticate_user! # GET /invoices # GET /invoices.json def index @invoices = current_user.invoices.all flash.now[:notice] = "U haven't added any invoices yet" if @invoices.empty? end # GET /invoices/1 # GET /invoices/1.json […]

GroupingError:ERROR:列必须出现在GROUP BY子句中或用于聚合函数

我的控制器中的代码是按最高平均评价等级排名的专辑(此解决方案中使用的代码如何通过has_many评论关系显示评分最高的专辑 ): @albums = Album.joins(:reviews).select(“*, avg(reviews.rating) as average_rating”).group(“albums.id”).order(“average_rating DESC”) 这段代码在我的开发环境(sqlite3)中运行得很好,但是当我将代码推送到heroku和postgresql时,我遇到了这个错误: PG::GroupingError: ERROR: column “reviews.id” must appear in the GROUP BY clause or be used in an aggregate function 我意识到这是一个相当普遍的问题,我对SQL有点缺乏经验,所以我在重构代码时遇到了麻烦,因此它可以在我的开发和生产环境中工作。

过滤链停止为:validate_sign_up_params呈现或重定向 – devise_token_auth

我正在使用devise_token_auth作为身份validation来处理 rails API上的ruby,每次我从postman google chrom扩展程序进行API调用时我都会收到此错误。下面是我的设置 的Gemfile gem ‘devise’ gem ‘omniauth’ gem ‘devise_token_auth’ gem ‘byebug’ gem ‘rack-cors’, :require => ‘rack/cors’ 的routes.rb mount_devise_token_auth_for ‘User’, at: ‘auth’ application_controller.rb include DeviseTokenAuth::Concerns::SetUserByToken before_action :authenticate_user! , :except=>[:new, :create] 用户模型: devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable include DeviseTokenAuth::Concerns::User after_initialize :set_provider #, :set_uid def set_provider byebug self[:provider] = “email” if […]

从Rails 2.3.8升级到4.0

我在Rails 2.3.8上运行一个应用程序。 我打算将它升级到Rails 4.0(在RC中)。 对我来说最简单的方法是什么? 我是否需要先升级到Rails 3.x? 注意:在我目前的实施中,我使用的是椋鸟和雪貂; 作为升级的一部分,我也在考虑转向sidekiq和太阳黑子

使用浅路径保护rails API

我正在构建一个JSON api,它将成为另一个rails站点的数据源(使用devise for auth),并且具有基本的令牌认证工作。 API还将负责向移动应用程序提供数据。 在API中,我有以下模型:用户,书籍和章节用户has_many:书籍,书籍has_many:章节。 在我的路线文件中,我有 shallow do resources :users do resources :books do resources :chapters end end end 这导致如下路线: /users/:user_id , /users/:user_id/books /books/:book_id , /books/:book_id/chapters /chapters/:chapter_id 即’浅路线’,而不是/ users /:user_id / books /:book_id / chapters /:chapter_id 我想知道我应该如何validation这些,因为该章不属于用户这不仅仅是检查user_id的情况(因为这是书模型的属性)。 # chapters_controller def show @chapter = Chapter.find(params[:id]) end 我是否必须得到@ chapter的书然后检查它的user_id? 不知怎的,对我来说感觉不对。 我是朝着错误的方向前进的吗? 谢谢阅读!