Tag: ruby on rails

如何迭代ActiveRecord属性,包括attr_accessor方法

我到处寻找一个优雅的解决方案。 基本问题似乎是,在ActiveRecord :: Base中,映射到数据库列的ActiveRecord属性与attr_accessor方法完全不同。 我想做的事情如下: model.attribute_names.each do |name| # do stuff end 以包含attr_accessor字段的方式,但不包括任何其他实例方法。 我知道这不是内置的,但最优雅的方法是什么?

使用brew时出现“错误的解释器”错误

当我尝试运行任何brew命令时,我收到此错误。 Holger-Sindbaeks-MacBook-Air:~ holgersindbaek$ brew help -bash: /usr/local/bin/brew: /usr/bin/ruby: bad interpreter: No such file or directory 我完全不知道如何解决这个问题并且一直在寻找很长时间而没有回答。

将参数从视图传递到控制器

我有点新手问题。 我正试图将一个变量从我的视图传递给我的控制器。 无论如何我的控制器中的方法可以从我的视图中接收变量吗? Post view: show.html.erb: …. :add_relationship(@rela) %> Controller: post.controller.rb: def add_relationship(rela) @post = Post.find(params[:id]) if current_user.id == @post.user_id @post.rel_current_id = rela.id @post.save redirect_to relationships_url else redirect_to posts_url, :notice => “FY!” end end 提前致谢 :)

Ruby:使用私钥/公钥进行文件加密/解密

我正在寻找一种文件加密/解密算法,它满足以下要求: 算法必须可靠 对于相当大的文件,算法应该很快 私钥可以通过某些参数生成(例如,密码) 生成的私钥必须与公钥兼容(公钥只生成一次并存储在数据库中) 是否有建议算法的Ruby实现?

尝试加载gem’设计时出错。 ActiveSupport:持续时间不能强制转换为Integer

我一直试图解决这个错误一段时间没有找到任何帮助,请帮助。 我正在尝试使用设计gem在我的ROR应用上运行迁移。 但我从ActiveSupport得到错误’持续时间无法强制转换为整数’。 发生这种情况然后我尝试运行: rake db:migrate 我不确定它是否与迁移代码有关,或者它是否与新的设计版本有关。 这是错误消息: /home/sam/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.1.1/lib/active_support/values/time_zone.rb:285: warning: circular argument reference – now /home/sam/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thread_safe-0.3.5/lib/thread_safe/cache.rb:155: warning: constant ::Fixnum is deprecated rake aborted! Bundler::GemRequireError: There was an error while trying to load the gem ‘devise’. Gem Load Error is: ActiveSupport::Duration can’t be coerced into Integer Backtrace for gem load error is: /home/sam/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.1.1/lib/active_support/core_ext/numeric/time.rb:50:in `*’ /home/sam/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.1.1/lib/active_support/core_ext/numeric/time.rb:50:in `days’ […]

如何使用ruby on rails生成人类可读的时间范围

我正在尝试找到生成以下输出的最佳方法 job took 30 seconds job took 1 minute and 20 seconds job took 30 minutes and 1 second job took 3 hours and 2 minutes 我启动了这段代码 def time_range_details time = (self.created_at..self.updated_at).count sync_time = case time when 0..60 then “#{time} secs” else “#{time/60} minunte(s) and #{time-min*60} seconds” end end 有没有更有效的方法来做到这一点。 对于一些超级简单的东西来说,似乎有很多冗余代码。 另一个用途是: was posted 20 […]

Cron工作不在Whenever gem工作

我有一个包含大量任务的应用程序,每天我都想运行一个cron作业,为数据库中的每个Task创建一个DayTask。 任务has_many DayTasks和这些daytasks是用户每天将要检查的。 我正在使用随时随地的gem,但它似乎根本没有运行。 有任何想法吗? 配置/ schedule.rb every 1.day, :at => “12:01am” do runner “Task.generate_tasks_for_day” end Task.rb def generate_tasks_for_day Task.all.each do |task| task.day_tasks.create(:target_date => Date.today) end end 运行’when命令’的结果 1 0 * * * /bin/bash -l -c ‘cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production ‘\”Task.generate_tasks_for_day’\”’ 注意:每次我想测试运行时,我一直在更改config / schedule.rb中的时间。

Ruby有一个natural_sort_by方法吗?

我有一堆带有一堆属性的文件。 其中一个属性是文件名,这就是我想对列表进行排序的方式。 但是,列表如下所示:filename 1,filename 2,filename 10,filename 20。 ruby sort_by方法产生: files = files.sort_by { |file| file.name } => [filename 1, filename 10, filename 2, filename 20] 我想要一个更易读的列表,如文件名1,文件名2,文件名10,文件名20 我找到了natural_sort gem,但它似乎只能像sort方法一样工作。 我需要一些东西,我可以指定对数组进行排序的内容。 有帮助吗?

Rails 3禁用会话cookie

我在RoR 3上编写了RESTful API。我必须让我的应用程序不发送“Set-Cookie header”(客户端使用auth_token参数进行授权)。 我试过使用session :off和reset_session但它没有任何意义。 我使用devise作为身份validation框架。 这是我的ApplicationController class ApplicationController :session_required? session :off #, :unless => :session_required? skip_before_filter :verify_authenticity_token before_filter :access_control_headers! def options render :text => “” end private def access_control_headers! response.headers[“Access-Control-Allow-Origin”] = “*” response.headers[“Access-Control-Allow-Methods”] = “GET, POST, PUT, DELETE, OPTIONS” response.headers[“Access-Control-Allow-Credentials”] = “true” response.headers[“Access-Control-Allow-Headers”] = “Content-type” end def session_required? !(params[:format] == ‘xml’ or params[:format] […]

如何使用RSpec测试`rand()`?

我有一个类似这样的方法: def some_method chance = rand(4) if chance == 1 do # logic here else # another logic here end end 当我使用RSpec来测试这个方法时,它内部的rand(4)总是生成0.我没有测试Rails的rand方法,我正在测试我的方法。 测试我方法的常见做法是什么?