Tag: ruby

在Active Admin Gem中,如何修改资源视图?

我在Rails项目中实现了ActiveAdmin。 我有一个名为“客户”的资源。 在导航栏中,有一个名为“新客户”的选项来创建客户。 如何更改此新客户的视图? 当我点击“新客户”按钮时,它必须接受来自我的电子邮件,它应该发送该电子邮件ID的邀请。

播种未通过嵌套表validation(validates_presence_of)

组织模型与用户模型具有1:多的关联。 我的用户模型文件中有以下validation: belongs_to :organization validates_presence_of :organization_id, :unless => ‘usertype==1’ 如果usertype为1,则表示用户没有与之关联的组织。 对于不同的usertype,organization_id的存在应该是强制性的。 组织模型包括: has_many :users accepts_nested_attributes_for :users, :reject_if => :all_blank, :allow_destroy => true 我的种子文件使用嵌套,包括: Organization.create!(name: “Fictious business”, address: Faker::Address.street_address, city: Faker::Address.city, users_attributes: [email: “helpst@example.com”, username: “helpyzghtst”, usertype: 2, password: “foobar”, password_confirmation: “foobar”]) 播种时会产生以下错误。 从模型中删除validation解决了它,但我不想这样做。 我怎么解决这个问题? validation失败:用户组织不能为空

如何在rails 4.0中使用社交流

你好,并试图使用这个gem想知道如何修复它添加到我的Gemfile gem “social_stream”, “~> 2.2.2” 当我运行“捆绑安装”时,我得到了这个错误作为响应,我能做到吗? 我有点新意。 Bundler could not find compatible versions for gem “rails”: In Gemfile: social_stream (~> 2.2.2) ruby depends on rails (~> 3.1) ruby rails (4.0.0) 因为我可以在Rails 4.0或Rails版本更改中使用此gem,是否建议这样做? 谢谢

方法语法导致混淆

def current_user=(user) @current_user = user end def user_from_remember_token User.authenticate_with_salt(*remember_token) end def remember_token cookies.signed[:remember_token] || [nil, nil] end 1)我大多与def current_user =(用户)混淆。 什么是= for。 我看到它将用户对象作为参数,但是=符号的重点是什么。 2)不确定为什么有一个* infront remember_token。 有谁能解释一下? 谢谢

Rails保存返回true但不保存任何内容

我有一些代码使用Omniauth为Oauth找到一个用户。 如果用户在第1天用Facebook登录,请在第2天使用FB更改其电子邮件地址,并在第3天重新登录我的应用程序我想更新文件中的电子邮件地址。 以下代码应同步电子邮件地址。 我使用AwesomePrint将电子邮件地址写入控制台,它们是不同的。 但是,保存返回true,但电子邮件地址不更新? def self.find_or_create_for_oauth(auth) social_identity = SocialIdentity.find_for_oauth(auth.provider, auth.uid) email = auth.info.email if social_identity.nil? user = find_by_email(email) if user.nil? # create user for email with random password end social_identity = user.social_identities.create!( provider: auth.provider, uid: auth.uid ) end user = social_identity.user ap user.email # email address 1 ap email # email address 2 if […]

ActiveAdmin:按子对象的计数进行筛选

在一个严重依赖ActiveAdmin的Ruby on Rails应用程序中,我有一个赞助商模型,它与赞助模型相关联。 一个sponsor可以赞助许多孩子,因此一个sponsor可以有很多sponsorships 。 我想做的是,能够在赞助商索引页面上按赞助商数量过滤赞助商。 因此,举例来说,我只希望看到那些拥有多个赞助商或少于五个赞助商的赞助商,依此类推。 你明白了。 在Ruby中,我想要一个filter,它可以做以下几行: Sponsor.all.select { |sp| sp.sponsorships.count > 1 } 事实上,我发现这很难做到。 默认的ActiveAdminfilter处理特定模型(或其子模型)的属性,而不是自定义方法,而我需要通过自定义方法精确过滤。 所以这是ActiveAdmin的组合视图/控制器sponsor.rb文件中的filter: filter :sponsorships_count, label: ‘Sponsorships’, as: :numeric 其中:sponsorships_count不是赞助商模型的属性。 我试图使用Ransacker(似乎有些人已经成功使用它 ),但无法弄清楚正确的语法。 其他人有幸将filter指定为自定义(使用as: custom语法,例如此处并提供模型范围的名称作为filter名称),但这对我不起作用(该应用程序使用ActiveAdmin版本1.0.0。据报道,这种方法不适合这种方法)。 有人帮忙吗?

为什么我的生产Rails服务器不能解析常量?

我们刚刚更新到Rails 5。 现在所有测试都通过 我能够启动一个Web服务器,一切似乎都有效。 但是在生产服务器上,有些URL会出现如下错误: uninitialized constant #::JsonUtils app/models/thing.rb:71:in `as_json’ JsonUtils位于app/lib/json_utils.rb 。 (当lib从过去的自动加载路径中取出时,我们将它们移动到了app/lib 。) 如果我运行bin/rails console development ,实际上,即使我运行bin/rails console production ,我也可以输入JsonUtils并解析它。 然而,当应用程序正在运行时,此类无法解析。 有没有人见过这样的东西?

如何强制rails SQL缓存清除?

我正在运行rails db:reset db:migrate在我的测试脚本(直接导入和与模型接口)之间的测试之间进行rails db:reset db:migrate ,但是更改不会反映在第一个测试和第二个测试之间。 更具体地说,第一次测试引起的变化并没有像它们应该的那样逆转。 当我从外部(从shell)连接到数据库时,我发现该命令已生效。 我已经看过这个问题,但解决方案没有效果(确实,没有错误,但也没有明显的效果)。 如何强制我的测试脚本清除sqlite状态的内存缓存? 重现问题的完整步骤。 创建一个新的rails应用程序。 rails new MWE 将以下内容放在db/schema.rb ActiveRecord::Schema.define(version: 20140408213603) do create_table “users”, force: true do |t| t.string “username” end end 将以下内容放在db/seed.rb 。 User.create(username: ‘user1’) User.create(username: ‘user2’) User.create(username: ‘user3’) 将以下内容放在Gemfile 。 source ‘https://rubygems.org’ gem ‘rails’, ‘4.0.0’ gem ‘sqlite3’ gem ‘protected_attributes’ 将以下内容放在名为app/models/user.rb的文件中。 class User < ActiveRecord::Base attr_accessible :username […]

将gem coffee-script-source’从1.9.1降级到1.8.0

我收到此错误:Welcome#indexExecJS :: ProgramError in Welcome #index中的ExecJS :: ProgramError。 根据其他发布的post,因为在Windows上运行的coffee-script-source 1.9.0 / 1存在问题所以我必须使用命令行降级gem:gem’coffee-script-source’,’1.8.0 ”。 当我尝试这样做时,我得到这个错误: 错误:执行gem时…(Gem :: CommandLineError)未知命令coffee-script-source, 我做错了什么?

Gem安装错误的参数数量(给定1,预期为0)

当我运行bundle ,我得到以下内容: The `bundle’ command exists in these Ruby versions: 2.1.8 2.4.2 jruby-9.1.15.0 我的项目使用Ruby-2.5.1,所以我尝试使用gem install bundler更新我的gem install bundler ,但是我收到以下错误: ERROR: While executing gem … (ArgumentError) wrong number of arguments (given 1, expected 0) 使用–backtrace /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:47:in `require’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:162:in `initialize’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:104:in `new’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/installer.rb:104:in `at’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/resolver/specification.rb:93:in `install’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:166:in `block in install’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:156:in `each’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/request_set.rb:156:in `install’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:251:in `install_gem’ /Users/spencerbailey/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/commands/install_command.rb:301:in […]