小编Jef*_*eff的帖子

ActiveRecord范围返回一个数组

我有一个范围,它返回一个Array而不是一个ActiveRecord Relation调用它,但如果我调用范围内的方法,它返回一个ActiveRecord Relation.

scope :beta_user, -> {
  joins(:config).where("config_type = 'Model' AND opts #>> '{beta}' = 'true'")
}

# Calling scope directly
Model.beta_user # => [Model1, Model2, Model3]
Model.beta_user.class # => Array

# Calling scope definition
Model.joins(:config).where("config_type = 'Model' AND opts #>> '{beta}' = 'true'") 
=> [Model1, Model2, Model3]

Model.joins(:config).where("config_type = 'Model' AND opts #>> '{beta}' = 'true'").class
=> Model::ActiveRecord_Relation
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,不一致的返回类型会发生什么?在此之后我无法链接其他范围(我仍然可以在它之前链接它们)并且我不能使用其他AR Relation方法,例如#order#pluck.

从我在控制台中可以看到,似乎调用Model.beta_user.class仍在执行查询,Model.joins(:config).where("config_type = 'Model' AND …

activerecord ruby-on-rails

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

内插变量的字符串连接

以下代码长于推荐的80个字符.

我试图将其分解并用+运算符和<<运算符连接,但它似乎不起作用.我已经尝试过这种.to_s方法并将冒号移动到他们自己的字符串中但无济于事.

将此分成2行或3行而不会出现no method "+@":String错误的正确方法是什么?

string = "#{sprintf("%02i", hours)}:#{sprintf("%02i", minutes)}:#{sprintf("%02i", seconds)}"
Run Code Online (Sandbox Code Playgroud)

ruby string

0
推荐指数
1
解决办法
83
查看次数

标签 统计

activerecord ×1

ruby ×1

ruby-on-rails ×1

string ×1