Tag: ruby on rails 5.1

Rails:提高简单搜索方法的性能

这些天我一直在构建应用程序。 function完全没什么特别的,我必须连接到客户端的SOAP Web服务,获取一些数据,将其保存到我的pg数据库中,并根据这些数据构建搜索function。 搜索必须在两个表上执行,两者组合都是80K行。 它需要在这两个表中的几个字段中查找输入文本中的每个单词,这两个表具有一对多的经典关联。 以前让我的手弄脏了我看着我必须完成function的选择(ransack,searchkick,scoped_search等),但我最终尝试只是vanilla Active Record而且我很惊讶地发现我可以实现function方式比我想象的更容易,并且具有可接受的响应时间,对于本地最昂贵的查询,大约400ms的活动记录时间。 所以问题是,这个应用程序在Heroku中的性能比在本地更差(我正在开发使用流浪盒btw)。 平均而言,查询所需的时间比本地查询长2-3倍,因此用户体验从可接受到穷人。 我想知道是否有人可以帮助改善我的查询。 我也担心获取数据的后台工作如何在本地以及存储器的某些问题上表现得很差,但这是一个不同的故事。 相关的片段是这些: part_master.rb ,其中实现了搜索方法: class PartMaster { where(“stock > 0”) } scope :planta, -> (planta) { where planta_cod: planta} def self.search(params) recordset = PartMaster.joins(:part_variants).all recordset = recordset.con_stock if params[:stock].present? recordset = recordset.planta(params[:planta]) if params[:planta].present? recordset = search_keywords(params[:search], recordset) recordset end private def self.search_keywords(query, recordset) […]

rails – 通过Active Storage上载文件后在视图中显示图像

我有一个在rails 5.1.2上的项目,我正在尝试在其上实现Active Storage,在线教程之后,我能够设置Active Storage,我可以看到数据保存在active_storage_blobs和active_storage_attachments表中。 教程1 教程2 我还通过运行user.avatar.attached?确认user.avatar.attached? 作为回应我得到了真实所以事情正在发挥作用。 我遇到的问题是在视图中显示图像,我试过了 NoMethodError:未定义的方法`active_storage_attachment_path’ 我做了什么来设置Active Storage 执行安装命令 rails active_storage:install 这给出了错误不知道如何构建任务’active_storage:install’ 但是以下命令有效 rails activestorage:install 我在gemfile添加了gem ‘activestorage’ 这就是我在storage_services.yml test: service: Disk root: local: service: Disk root: 在我的development.rb里面.rb我添加了 config.active_storage.service = :local 在我的User模型中,我添加了has_one_attached :avatar 在更新控制器内部,我添加了附件代码 user.avatar.attach(params[:user][:avatar]) 我可以看到图像被添加到数据库中, 我可以看到图像保存在root上的存储目录中 但我无法显示它, 我在这里想念的是什么? 要让图像在视图中显示,我需要做什么? 为什么我会收到此错误 NoMethodError:未定义的方法`active_storage_attachment_path’

嵌套资源w / Rails 5.1 form_with

根据这个拉取请求,我可以看到一个数组应该传递给form_with的模型参数。 但是,当我提供以下内容时: … Rails将返回 – ActionView::Template::Error (undefined method activity_path’ for #<#:0x007f8023010dd8>): 我的路线文件如下: resources :trips do resources :activities end rake routes的输出看起来像 – trip_activities GET /trips/:trip_id/activities(.:format) activities#index POST /trips/:trip_id/activities(.:format) activities#create new_trip_activity GET /trips/:trip_id/activities/new(.:format) activities#new edit_trip_activity GET /trips/:trip_id/activities/:id/edit(.:format) activities#edit trip_activity GET /trips/:trip_id/activities/:id(.:format) activities#show PATCH /trips/:trip_id/activities/:id(.:format) activities#update PUT /trips/:trip_id/activities/:id(.:format) activities#update DELETE /trips/:trip_id/activities/:id(.:format) activities#destroy trips GET /trips(.:format) trips#index POST /trips(.:format) […]

将数据从Rails视图传递到webpacker中的VueJS组件

我正在尝试使用Rails 5.1的新webpacker gem以及VueJS,但无法获取我的erb视图以将数据传递给VueJS组件…… 假设我有一个用户显示视图 # view/users/show.html.erb 而我的javascript: // app/javascript/packs/user-card.js require(“user-card”) // app/javascript/user-card/index.js import Vue from ‘vue/dist/vue.esm’ import UserCard from ‘./components/UserCard’ document.addEventListener(‘DOMContentLoaded’, () => { let element = document.getElementById(“user-card”) let username = element.dataset.username console.log(username); // => “pecpec” const app = new Vue({ el: element, template: ”, components: { UserCard }, data () { return { username […]

raails 5.1中的form_with搜索字段

在Rails 5.1中,所有表单都必须使用form_with完成。 在http://edgeguides.rubyonrails.org/5_1_release_notes.html#unification-of-form-for-and-form-tag-into-form-with中,我只能找到与模型相关的表格示例。 使用form_with在Rails 5.1中完成此Rails 5.0表单的正确方法是什么?

如何在Rails 5.1中关闭BIGINT主键

Rails 5.1迁移为表的主键( changelog )生成BIGINT (而不是Integer )。 可以在配置中的某个地方禁用它吗? 如果是这样,如何禁用它?