Tag: ruby on rails 5

使用active_model_serializers实现API版本控制的正确方法

我知道已经存在一些问题,而且这是一个关于AMS不能有效处理命名空间 (这种版本控制方法使用) 的开放性问题,但我想确保我在当前约束内处于正确的轨道。 现在我正在使用Rails 5和AMS 0.10.1,所以我做了以下事情: # config/initializers/active_model_serializer.rb ActiveModelSerializers.config.serializer_lookup_enabled = false 禁用默认的序列化程序查找(无论如何都不起作用); 和 # app/controllers/application_controller.rb class ApplicationController < ActionController::API def get_serializer(resource, options = {}) unless options[:each_serializer] || options[:serializer] then serializer = (self.class.name.gsub("Controller","").singularize + "Serializer").constantize resource.respond_to?(:to_ary) ? options[:each_serializer] = serializer : options[:serializer] = serializer end super(resource, options) end end 覆盖默认情况下如何找到序列化程序; 我的控制器和序列化器是这样的: # app/controllers/api/v2/api_controller.rb module Api::V2 class […]

Rails 5:不推荐使用`Gem.paths =`参数中的数组值

基于actioncable-examples构建websockets app。 启动服务器,运行rake等时,我不断收到消息: Array values in the parameter to `Gem.paths=` are deprecated. 这里没有看到解决方案,但确实找到了解决方案。 我想在这里发布问题和答案,以便它可用。

来自控制台的ActionCable.server.broadcast

我可以在控制器中使用以下代码,但不能在控制台中使用(两个开发环境)。 我正在使用Rails 5.0.0.beta2。 ActionCable.server.broadcast ‘example_channel’, message: ‘Test’ 控制台: >> ActionCable.server.broadcast ‘example_channel’, message: ‘Test’ [ActionCable] Broadcasting to example_channel: {:message=>”Test”} => [] 我怎样才能在控制台中使用它?

Rails – validation:如果一个条件为真

在Rails上5。 我有一个带有description属性的Order模型。 如果满足以下两个条件之一,我只想validation它的存在:如果当前步骤等于第一步或者如果require_validation等于true。 我可以根据这样的条件轻松validation: validates :description, presence: true, if: :first_step? def first_step? current_step == steps.first end 但我不知道如何添加另一个条件并validation其中一个是否属实。 就像是: validates :description, presence: true, if: :first_step? || :require_validation 谢谢!

如何使用devise_token_auth和ActionCable来validation用户?

我有一个带有devise_token_auth gem身份validation的Rails 5 API。 现在我想要经过身份validation的用户进行个人聊天 我没有资产,因为我正在使用API​​,而前端是在本机应用程序中,我希望本机应用程序消息传递。 所以我如何使用devise_token_auth gemvalidation用户使用动作电缆进行个人消息传递

无法在Rails 5控制器测试中设置会话哈希

根据Rails Edge指南,所有ActionDispatch :: IntegrationTest HTTP请求都采用可选的命名关键字参数: get post_url, params: { id: 12 }, session: { user_id: 5 } 大。 现在,我在控制器测试中得到以下代码: test ‘should redirect from login page if user is logged in’ do get ‘/login’, session: { user_id: users(:stephen).id } assert_redirected_to root_url, ‘Expected redirect to root’ end 当我运行它时,我的测试失败 ,我看到以下弃用警告: ActionDispatch::IntegrationTest HTTP request methods will accept only the […]

Heroku with rails 5错误Gem :: LoadError:为数据库适配器指定’postgresql’

我是Rails的初学者,在部署到Heroku时我看到了一些问题。 之前我使用的是SQLite3,后来当我明白我需要postgresql时,我安装了相同的并在本地机器上工作。 从sqlite迁移到postgresql后,一次部署正常。 现在我看到一些问题。 Heroku日志,Gem文件和Database.yml详细信息如下。 请有人帮助我。 提前谢谢…… !!! Gem文件的一部分: group :development, :test do gem ‘pg’, ‘~> 1.0.0’ gem ‘rails_12factor’ #gem ‘sqlite3’ # Call ‘byebug’ anywhere in the code to stop execution and get a debugger console gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw] # Adds support for Capybara system testing and selenium driver gem ‘capybara’, ‘~> […]

Rails 5:无法从参数中检索哈希值

我遇到了一个奇怪的问题。 undefined method `values’ for # 是我得到的错误,当我将变量分配给param哈希,并尝试获取它的值。 attributes = params[:line_item][:line_item_attributes_attributes] || {} attributes.values 该参数看起来像哈希的散列: {“0″=>{“product_attribute_id”=>”4”}, “1”=>{“product_attribute_id”=>”7”}} 现在当我在控制台中执行此操作并将其分配给变量属性时,它可以完美地工作。 所以我很难理解这里不起作用的东西 – 以及如何让它发挥作用。

必须指定iv attr_encrypted,如何检查登录名和密码

您好,有以下型号: class User secret_key attr_encrypted :password, :key => secret_key […] end 我将4个cols添加到我的模型中 rails g migration AddEncryptedColumnsToUser encrypted_email:string encrypted_password:string encrypted_email_iv:string encrypted_password_iv:string 现在我想检查电子邮件和密码是否正确,但我不知道如何处理: secret_key_data = “my big secret 32 bits key ” email = User.encrypt_email(“test@test.com”, key: secret_key_data) password = User.encrypt_password(“test”, key: secret_key_data) User.where(‘(encrypted_email) LIKE ? AND (encrypted_password) LIKE ? ‘, email,password) 但当我这样做时: email = User.encrypt_email(“test@test.com”, key: secret_key_data) […]

如何使用ActionCable作为API

我使用Rails 5 beta 1和ActionCable构建了一个非常简单的应用程序,以显示用户何时联机并让他们相互发送消息。 现在,我基本上想采取ActionCable的客户端部分,在另一个应用程序( 不在 Rails 5上运行)的上下文中实现它并将其与第一个应用程序连接以发送和接收数据(例如在线)用户或消息的状态)。 为了从第二个应用程序发送数据,我认为,我可以简单地发出一个AJAX POST请求。 问题是: 如何从我的第二个应用程序订阅第一个应用程序的开放连接? 甚至:我如何通过API从另一个应用程序订阅我的Rails应用程序的ActionCable连接? 我的猜测是,我基本上想在我的第二个应用程序中以某种方式包含这个coffeescript: App.appearance = App.cable.subscriptions.create “AppearanceChannel”, connected: -> # Called when the subscription is ready for use on the server disconnected: -> # Called when the subscription has been terminated by the server received: (data) -> # …