天道酬勤,学无止境

ruby-on-rails-4

使用带有关联的 Rails Gem Active Admin(Using Rails Gem Active Admin with Associations)

问题 我正在尝试新的 Rails gem http://activeadmin.info/,它运行良好! 但是,我找不到有关如何跨协会使用它的任何文档。 例如: class Membership < ActiveRecord::Base belongs_to :course belongs_to :person class Course < ActiveRecord::Base has_many :memberships has_many :people, :through => :memberships class Person < ActiveRecord::Base has_many :memberships has_many :courses, :through => :memberships 成员连接表还包括一些额外的数据(即:出勤率)。 我正在尝试同时显示课程和学生姓名的成员资格 - 并允许对这些姓名进行过滤/排序。 据我所知,Active Admin 不能跨关联工作。 有没有其他人成功地做到了这一点,或者找到了另一个可以做到的宝石? 非常感谢! 回答1 成分.rb class Ingredient < ActiveRecord::Base has_and_belongs_to_many :products, :join_table => :ingredients

2021-12-05 09:53:25    分类:技术分享    ruby-on-rails-3   ruby-on-rails-4   rubygems   activeadmin

PG::ConnectionBad:将 rails 从 4.2 升级到 5.2 后连接关闭(PG::ConnectionBad: connection is closed after upgrading rails from 4.2 to 5.2)

问题 我已将项目的 Rails 版本从 4.2 升级到 5.2.1,由于完整跟踪中的 pg 连接关闭错误,我的一些测试失败,如下所示。 Failure/Error: DatabaseCleaner[:active_record].clean_with(:truncation) ActiveRecord::StatementInvalid: PG::ConnectionBad: connection is closed: TRUNCATE TABLE "public"."alerts", "public"."article_attachments", "public"."article_check_specification_tolerances", "public"."article_machine_part_settings", "public"."articles", "public"."attachments", "public"."check_batches", "public"."check_groups", "public"."check_specification_machine_types", "public"."check_specification_priorities", "public"."check_specification_responsibility

2021-12-03 14:05:38    分类:技术分享    ruby-on-rails-4   rspec   ruby-on-rails-5   rake   database-cleaner

Rails 在多个实例/服务器上重新加载动态路由(Rails reload dynamic routes on multiple instances/servers)

问题 我们如何强制 Rails 在多个服务器/实例上重新加载路由? 我们在 Google App-Engine 中有一个多租户平台,在 5 个以上的实例上运行,我们希望我们的所有站点都从后端定义自己的一组路由。 每当我们有一个新站点时,我们目前都必须重新启动所有服务器才能访问新路由。 我们遵循了本指南,但它仅适用于本地环境,并且不会在不重新启动服务器的情况下更新生产中所有服务器上的路由。 我们的路由文件如下所示: 路由文件 Frontend::Application.routes.draw do root 'home#index' ... DynamicRoutes.load end lib/dynamic_routes.rb def self.load Frontend::Application.routes.draw do Site.all.each do |site| site.routes.each do |custom_route| route_name = custom_route[0] route = custom_route[1] # write the route with the host constraint self.constraints(:host => site.hostname) do case route_name when :contact

2021-12-02 20:23:25    分类:技术分享    ruby-on-rails   ruby   ruby-on-rails-3   ruby-on-rails-4   routing

了解 Rails 4 中的 after_update 回调(Understanding after_update callback in Rails 4)

问题 我有一个带有after_update回调的 Rails 对象, after_update记录发送到队列。 问题是我注意到有时队列的处理速度比对象实际更新的速度要快。 我的问题: after_update不是在对象更新结束后调用,而是在它开始时调用? 如果我只想在更新成功后对其进行处理,我需要什么回调? 回答1 after_save 、 after_create 、 after_update是在事务块内调用的,所以它们会在执行 SQL 语句之前执行。 如果你想在语句执行完成后做一些事情,你应该使用 after_commit 回调。 回答2 如果您查阅 Rails 文档,您会发现很多可以使用的回调。 最适合这项工作的可能是“after_commit”: 这直接来自 Rails Docs(链接在底部) 3.1 Creating an Object before_validation after_validation before_save around_save before_create around_create after_create after_save after_commit/after_rollback 3.2 Updating an Object before_validation after_validation before_save around_save

2021-12-01 11:19:01    分类:技术分享    ruby-on-rails   ruby-on-rails-4   callback

Rails 4:如何通过 AJAX 基于另一个 collection_select 更新 collection_select?(Rails 4: How to update a collection_select based on another collection_select through AJAX?)

问题 问题:我需要根据对组织集合的选择来过滤单位集合。 选择一个组织后,单位下拉菜单应刷新以仅显示属于知情组织的单位。 我检查了这些问题: Rails 表单:使用 AJAX 根据其他 collection_select 值更新 collection_select 选项 UJS、AJAX、Rails 4、form_for collection_select 将值传递给方法并将值返回给表单带有 collection_select 的 rails 中的 ajax 如何添加 onchange 事件以在 Rails 中选择标签 Rails 表单:使用 AJAX 根据其他 collection_select 值更新 collection_select 选项 Rails form_for collection_select 忽略 select_tag 接受的远程 ajax 调用远程选择,控制器需要更多表单数据 以及这些文件: http://guides.rubyonrails.org/form_helpers.html http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html http://api.rubyonrails.org/classes/ActionView/Helpers

2021-11-30 07:47:12    分类:技术分享    ruby-on-rails   ajax   ruby-on-rails-4

rails database.yml 不接受 ERB(rails database.yml not accepting ERB)

问题 在我的 database.yml 中,我有: staging: adapter: <%= ENV['DATABASE_ADAPTER'] %> encoding: <%= ENV['DATABASE_ENCODING'] %> database: <%= ENV['DATABASE'] %> host: <%= ENV['DATABASE_HOST'] %> port: <%= ENV['DATABASE_PORT'].to_i %> pool: <%= ENV['DATABASE_POOL'].to_i %> username: <%= ENV['DATABASE_USERNAME'] %> password: <%= ENV['DATABASE_PASSWORD'] %> 但是,它在实际启动 puma 时不会读取 ERB 部分: /usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require': Could not load 'active_record/connection_adapters/<%= ENV['DATABASE_ADAPTER'] %>_adapter'. Make sure that the

2021-11-30 05:12:51    分类:技术分享    ruby-on-rails   ruby-on-rails-4   environment-variables   yaml   erb

使用 Rspec 测试 ActiveModel::Serializer 类(Test ActiveModel::Serializer classes with Rspec)

问题 鉴于以下ActiveModel::Serializer类: class SampleSerializer < ActiveModel::Serializer attributes :id, :name end 如何使用RSpec进行测试? 回答1 假设 此答案假设您已安装和配置rspec-rails 、 active_model_serializers和factory_girl_rails gems。 此答案还假定您已为Sample资源定义了一个工厂。 序列化器规范 在撰写本文时,对于 active_model_serializers 的当前版本 (0.10.0.rc3), ActiveModel::Serializer类不接收to_json ,而是封装在适配器类中。 要获得包装在序列化程序实例中的模型的序列化,必须创建一个适配器实例: before(:each) do # Create an instance of the model @sample = FactoryGirl.build(:sample) # Create a serializer instance @serializer = SampleSerializer.new(@sample) # Create a serialization based on the configured adapter

2021-11-30 04:38:56    分类:技术分享    ruby-on-rails   ruby-on-rails-4   rspec   active-model-serializers

两个所属关联迁移的相同模型(Same Model for Two belongs_to Associations migration)

问题 如何为具有对同一模型的两个引用的模型创建迁移。 我有一个具有两个角色的用户模型,买家和卖家,我还有一个销售模型,所以每次销售都应该有一个买家和一个卖家。 我已经看到这个答案表明我的销售模式应该看起来像 class Sale < ActiveRecord::Base belongs_to :buyer, :class_name => 'User', :foreign_key => 'buyer_id' belongs_to :seller, :class_name => 'User', :foreign_key => 'seller_id' end 但我不知道如何创建迁移并使其工作......! 回答1 您必须创建以下迁移: rails g migration AddBuyerAndSellerToSales buyer:references seller:references 这应该创建以下迁移文件: class AddBuyerAndSellerToSales < ActiveRecord::Migration def change add_reference :sales, :buyer, index: true, foreign_key: true add_reference :sales, :seller, index: true, foreign_key: true

2021-11-30 03:29:57    分类:技术分享    ruby-on-rails   database   ruby-on-rails-4   associations

服务器未收到日历事件通知(Calendar Events Notification not received on server)

问题 我正在尝试观看谷歌日历活动。 我写了这段代码: def watch_calendar_event result = @client.execute( api_method: @calendar_api.events.watch, parameters: { calendarId: 'primary' }, body_object: watch_hash, headers: {'Content-Type' => 'application/json'} ) if result.status == 200 watch_data = result.data @calendar.update booking_expiration: watch_data.expiration, booking_id: watch_data.id, booking_resource_id: watch_data.resourceId, booking_resource_uri: watch_data.resourceUri, watching_event: true end rescue Exception => ex raise GoogleCalendarException, ex.message end 我收到了一条 200 成功消息,其中包含其他详细信息,例如booking_id、resource

2021-11-30 03:26:08    分类:技术分享    ruby   ruby-on-rails-4   google-calendar-api   watch

Rails - Rails.root.join 部署后行为异常(Rails - Rails.root.join misbehaving after deployment)

问题 我的 app/assets 目录中有 javascripts 和 stylesheets 目录,就像任何普通的 Rails 应用程序一样。 但是,我也希望有一个插件目录。 例子: app/assets/plugins/myPlugin1/somefile.js app/assets/plugins/myPlugin1/somefile.css 事情是,如果我使用 <%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %> 我会收到 404 错误,因为 /assets/javascripts/plugins/myPlugin1/somefile.js 不存在。 然后,我注意到“插件”目录正试图在 javascripts 中访问。 我认为这与“javascript_include_tag”有关。 经过一番研究,我意识到我必须将此行包含在 config/application.rb 中 config.assets.paths << Rails.root.join("app", "assets") 它似乎奏效了。 在 WEBRick 上,在开发方面,它运行得很好。 现在我成功部署到服务器,预编译资产,并认为我准备好了。 目录 /public/assets/ 被创建。 “app/assets/javascripts”、

2021-11-30 03:04:24    分类:技术分享    ruby-on-rails   ruby-on-rails-4   rails-assets