小编Rya*_*yan的帖子

如何使用Ruby Pry退出循环?

我正在使用Pry和我的Rails应用程序.我binding.pry在我的模型中设置了一个循环来尝试调试问题.例如:

(1..100).each do |i|
  binding.pry
  puts i
end
Run Code Online (Sandbox Code Playgroud)

当我输入时quit,它会进入下一次迭代并再次停止.有没有办法走出循环所以我不必输入quit100次?

目前,我知道如何摆脱它的唯一方法是使用CTRL+ C并重新启动应用程序.

ruby loops ruby-on-rails exit pry

200
推荐指数
6
解决办法
6万
查看次数

sam @mixin可以接受未定义数量的参数吗?

我正在尝试为过渡创建一个sass mixin.这就是我到目前为止所拥有的.

@mixin transition($var)
  -webkit-transition: $var
  transition: $var
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样传递多个参数

@include transition(color .5s linear, width .5s linear)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误

Syntax error: Mixin transition takes 1 argument but 2 were passed.
Run Code Online (Sandbox Code Playgroud)

有没有办法这样做,所以它在css中产生以下输出,同时仍然接受一个未定义数量的参数?

-webkit-transition: color .5s linear, width .5s linear;
transition: color .5s linear, width .5s linear;
Run Code Online (Sandbox Code Playgroud)

arguments sass undefined mixins

36
推荐指数
2
解决办法
1万
查看次数

渴望与Active Model Serializers加载关联

背景

我有一个带有深层嵌套关联的rails应用程序.

                          .-< WorkPeriod
Timecard -< Week -< Day -<--< Subtotal
                          `-< Adjustment

-<  (has many)
Run Code Online (Sandbox Code Playgroud)

我正在使用Active Model Serializer来构建API.

在客户端,我想一次性加载时间卡和所有关联.

目前我的序列化器看起来像这样,

class TimecardSerializer < ActiveModel::Serializer
  embed :ids, include: true
  has_many :weeks
end
class WeekSerializer < ActiveModel::Serializer
  embed :ids, include: true
  has_many :days
end
# ... etc ...
Run Code Online (Sandbox Code Playgroud)

问题

这一切都找到了,除了没有什么急于加载.因此,它最终会针对每个请求对数据库进行大量调用.对于每周,它会单独请求该周的日期.并且对于每一天,它单独请求它的work_periods,小计和调整.

performance ruby-on-rails associations eager-loading active-model-serializers

14
推荐指数
2
解决办法
6778
查看次数

仅覆盖默认范围(特别是顺序),而不是Rails中的其他内容

所以基本上我有两个班,作者.书籍可以有多个作者,作者可以有多本书.书籍具有以下默认范围.

default_scope :order => "publish_at DESC"
Run Code Online (Sandbox Code Playgroud)

在作者展示页面上,我想列出与该作者相关的所有书籍,所以我说以下内容......

@author = Author.find(params[:id])
@books = @author.books
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好.作者#show页面列出了按出版日期排序的所有属于该作者的书籍.

我也在研究一种能够按照书籍的受欢迎程度排序的宝石.

@books = @author.books.sort_by_popularity
Run Code Online (Sandbox Code Playgroud)

问题是每当它尝试排序时,default_scope总是会妨碍.如果我试图取消它之前它将摆脱作者关系并返回数据库中的每本书.例如

@books = @author.books.unscoped.sort_by_popularity # returns all books in database
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以使用ActiveRelation except()方法 做这样的事情(看起来它应该工作,但事实并非如此.它忽略了顺序,只是当它是default_scope命令时)

def sort_by_popularity
  self.except(:order).do_some_joining_magic.order('popularity ASC')
  #    |------------|                       |---------------------|
end
Run Code Online (Sandbox Code Playgroud)

关于为什么这不起作用的任何想法?关于如何以不同的方式工作的任何想法?我知道我可以摆脱default_scope,但我想知道是否还有另一种方法可以做到这一点.

activerecord ruby-on-rails default-scope rails-activerecord

12
推荐指数
1
解决办法
4756
查看次数

升级到Rspec 3后,符号与模块的比较失败

我刚从Rspec 2.99升级到Rspec 3,我的一些测试得到以下错误.

Failure/Error: Unable to find matching line from backtrace
ArgumentError:
  comparison of Symbol with Module failed
Run Code Online (Sandbox Code Playgroud)

我有以下控制器测试

require 'spec_helper'

describe PeopleController, type: :controller do
  subject { response }

  describe :index do
    before { get :index }

    it { should_not be_success }
    it { should have_http_status '401' }
  end
end
Run Code Online (Sandbox Code Playgroud)

知道可能导致错误的原因吗?

rspec ruby-on-rails rspec-rails

9
推荐指数
1
解决办法
1817
查看次数

更新shoulda-matchers后的未定义方法'assign_to'

'shoulda-matchers'在我的rails项目中的Gemfile中从版本1.4.2更新到2.0.0,现在当我运行我的rspec测试时,它给了我以下错误

undefined method `assign_to' for #<RSpec::Core::ExampleGroup::Nested_4::Nested_1::Nested_4::Nested_1:0x007fc96eaaaf48>
Run Code Online (Sandbox Code Playgroud)

是否在新的2.0.0版本中删除了此方法?

testing gem rspec ruby-on-rails shoulda

6
推荐指数
1
解决办法
1734
查看次数