Tag: ruby on rails 4

Ransack,Postgres – 从关联表中对列进行排序,使用distinct:true

我有一个使用Ransackgem的应用程序,我将它从Mysql转换为Postgres。 在排序列来自关联表并且distinct选项设置为true的实例中,Postgres会抛出此错误: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list Ransack github页面说,在这种情况下,“你是独立的。” 什么是最好的 – 任何! – 处理这种情况的策略? q = Contact.includes(:contact_type).search q.sorts = [‘contact_type_name asc’] q.result(distinct: true) PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 谢谢!

Rails 4嵌套在更新时属性多个记录

我被卡住了,我不知道为什么它不能正常工作。 我有一个有许多标签的模型产品。 当我更新产品rails时,正确更新产品属性,但是正在创建另一个标记记录,而不仅仅是更新它。 这是我的代码: 查看表格: 产品型号: class Product “user_id” has_many :tags, :dependent => :destroy accepts_nested_attributes_for :tags, reject_if: :all_blank, allow_destroy: true, :update_only => true end 标签型号: class Tag “product_id” # before_save { name.downcase! } end 产品控制器: def edit user = User.find(params[:user_id]) @product = user.products.find(params[:id]) @tags = @product.tags.all respond_to do |format| format.html format.js end end def update […]

如果不选择updated_at属性,则无法在Rails 4中更新模型

我正在从rails 3.2.13升级到4并遇到更新模型的问题。 我正在尝试更新我只有id的模型上的单个属性,我也想要validation和回调。 这在轨道3中运行良好,但我在轨道4中遇到了麻烦。 在轨道4中如果我这样做: user = User.select(:id).first user.first_name = ‘name’ user.save! 我收到错误: NoMethodError: undefined method `type_cast’ for nil:NilClass from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.3/lib/active_record/attribute_methods/time_zone_conversion.rb:10:in `type_cast’ 如果我在rails 3中运行相同的代码,则更新first_name并使用current_time更新updated_at。 如果在轨道4中我运行: user = User.select(:id, :updated_at).first user.first_name = ‘name’ user.save! 一切正常。 我假设错误是由于updated_at列不存在而引起的,但它不应该是。 在我的许多查询中,我只选择id作为速度。 Rails 3完美地处理了这个问题。 我也尝试使用update_attributes但我收到了同样的错误。 当我使用update_column但它跳过我想要的validation和回调时,它可以正常工作。 我不确定为什么会在rails 4中发生这种情况,或者如何在没有显式调用update_column之后的validation和回调或者选择我不应该执行的updated_at属性的情况下解决这个问题。

设计 – Rails 4 – 无法登录

我刚开始使用Rails 4.我使用自定义字段设置了devise 。 我可以在注册后登录,但我无法从登录页面登录。 用户注册很好,我在数据库表中username , password等。 有人能告诉我我错过了什么吗? 我的用户模型非常基础。 这是它的样子 – class User true, :presence => {:message => ‘- Username cannot be blank’} validates :first_name, :presence => { :message => ” – Firstname cannot be blank!”} private def user_params params.require().permit(:first_name, :last_name, :username, :email, :password, :password_confirmation) end end 我检查了我的观点,并且我传递了正确的参数。 我的应用程序控制器中有以下内容 – class ApplicationController < ActionController::Base # […]

如何在Rails表单中添加数据属性select标签?

我找到了这个Bootstrap Select项目及其Rails的gem 。 我想在select标签中实现搜索。 我检查元素,这里是HTML源: Hot Dog, Fries and a Soda Burger, Shake and a Smile Sugar, Spice and all things nice 如何在表单选择标记中添加data-live-search=”true” ? 我的表格选择: 我尝试过的: 但它不起作用。

首次登录重定向后设计

通常after_sign_up_path可以工作,但现在我已经confirmations ,这就是垃圾。 我正在寻找一种方法来重定向用户的FIRST SIGN IN ,这意味着 sign_in_count == 0 last_sign_in == nil 所以我添加到我的applications_controller.rb def after_sign_in_path_for(user) if current_user.sign_in_count == 0 welcome_path end end 但当然这没用。 我错过了什么?

Rails has_many:通过关联

我正在尝试创建一个rails应用程序,用户可以在其中创建活动并邀请参与者加入并需要您的帮助! 我一直在圈子里,尝试一些东西,但似乎根本不对,这现在让我发疯! 我正在使用rails 4。 你会如何设置活动模型? User has_many :events through :meeting //for the participants? has_many :events // for the organizer? Event belongs to :user has_many :participants, class_name: “User” Participant belongs to :user has_many :events through :meeting Meeting has_many :participants has_many :events 这有任何意义吗? 我是否需要参与者模型,或者我只是过度设计它? 我想我有点困惑,组织者是一个用户,参与者也是用户和会议需要组织者和参与者所以不太清楚如何使这项工作… 另请阅读我只有在添加参与者时才能建立会议关系。 这会是要走的路吗? 谢谢!

将sidekiq作业直接移至死队列

是否可以将sidekiq作业从SidekiqWorker实例级别直接移动到死队列(即执行时) class MyWorker include Sidekiq::Worker sidekiq_options retry: 9 def perform(name) if name == ‘StackOverflow’ # —-> skip_retry_queue_and_go_to_dead_queue else # do_stuff! end end end

如何用Rspec测试强对数?

使用Rspec在Rails控制器中测试强params过滤的实际策略是什么? (除了应该匹配)如何编写失败的测试然后使其变为绿色?

ActiveModel :: ForbiddenAttributesError使用update_attributes创建了params hash

我正在尝试使用simple_form编辑/更新模型记录,但表单不会直接更改模型字段。 相反,我提供了几个check_box_tag字段,用于告知更新需要更改的字段。 因此,更新未收到可用于更新属性的params [:device]哈希。 我试图创建这个哈希,但是当我发出@ device.update_attributes(params [:device])时,我得到了ForbiddenAttributesError。 我相信我的强参数列表是正确的。 如果我允许在编辑视图中处理一个模型字段(名称),我会收到预期的参数[:device]哈希,一切正常。 如果我禁用该字段,因为我不希望它被更改,那么我需要自己创建该哈希并收到错误。 当我查看我创建的哈希时,它看起来等同于视图传递的哈希。 我不明白为什么会失败。 环境是Ruby 2.0.0,Windows 8.1上的Rails 4.1和RubyMine 6.3。 表单是: Device: 我发送f.input:name,disabled:false并允许视图生成params [:device]时收到的params [:device]是: ActionController::Parameters (3 element(s)) “{“name”=>”D105”, “password”=>”D105Dvgr”, “password_confirmation”=>”D105Dvgr”}” 一切正常。 我创建的参数[:device]是: ActionController::Parameters (3 element(s)) “{“name”=>”D106”, “password”=>”D106VdAd”, “password_confirmation”=>”D106VdAd”}” 并且,我收到禁用属性错误,即使我看到两者之间没有区别。 更新是: class DevicesController ‘Not authorized as an administrator.’ @device = Device.find(params[:id]) pwd_msg = “” if params[:chg_pwd] pwd_gen = […]