我有一些看起来像这样的嵌套模型:
class Company
has_many :managers
end
class Manager
has_many :employees
end
class Employee
has_many :tasks
end
class Task
end
Run Code Online (Sandbox Code Playgroud)
所以这一切都很好,但如果我在Company控制器中并希望获得Task.ids该公司所有员工的所有权利呢?最大的问题是Mongoid没有has_many :through => resource_name像AR这样的东西,所以我怎么能避免像丑陋的东西:
@company = Company.find params[:id]
@company.managers.each do |manager|
manager.employees.each do |employee|
employee.tasks.each do |task|
puts task.id
end
end
end
Run Code Online (Sandbox Code Playgroud) 我有两个非常简单的表sessions,其中有一个json像这样的列:
+----+-------------------------------------------------------+
| id | data |
+----+-------------------------------------------------------+
| 1 | { "user_id": "bc2166dd-ca1d-41c6-9c66-610f844ca139" } |
+----+-------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
还有一个users像这样的表:
+--------------------------------------+--------------------+
| id | email |
+--------------------------------------+--------------------+
| bc2166dd-ca1d-41c6-9c66-610f844ca139 | foobar@example.com |
+--------------------------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)
有没有办法json像这样联接列类型的内容?
with recursive active_sessions AS (
select
data->'users_id' as sid
from sessions
)
select *
from active_sessions
join users ON active_sessions.sid = users.id
where sid is not null;
Run Code Online (Sandbox Code Playgroud)
在我的基本尝试中,我陷入了困境,似乎无法获取可以在联接中使用的json文本,但出现了以下错误:
[22P02] ERROR: invalid input syntax for uuid: ""bc2166dd-ca1d-41c6-9c66-610f844ca139""
Run Code Online (Sandbox Code Playgroud)
注意双引号...?
我也尝试过user_id在select中进行强制转换, …
我是CSS的新手,我想尽量减少我在HTML文档中做的标记量.
有没有办法将换行定义为具有以下内容:对于我已定义<br />的给定<div>,我可以执行以下操作:
.description {
br: on;
color: #D3E22A;
width: wrap;
}
Run Code Online (Sandbox Code Playgroud) 我需要在其值已知时获取select(#Dropdown)的名称,但似乎无法使语法正确.这是一个例子:
$(document).ready(function()
{
var countrycode = '55';
var name = $("#Dropdown[value=countrycode]").text(); // fails here
if(name == 'Germany')
{..... etc
Run Code Online (Sandbox Code Playgroud)
当我能够使用"this"时,我可以在不同的上下文中按照以下方式工作:
var name = $(this[value=countrycode]).text();
Run Code Online (Sandbox Code Playgroud)
...但是在第一个例子中没有.
任何人?谢谢.
这可能有点奇怪,但是如何从模型中的对象中获取列名?
例如,我有一个表恰好将其中的所有50个状态作为单独的列(我知道,我知道这可能更有效),所以它们看起来像:
al_allowed, ak_allowed, etc...
Run Code Online (Sandbox Code Playgroud)
这些列是布尔值,但我想在我的模型中知道如何获取列名?,例如,如果对于特定记录(在本例中为Campaigns),我想查看哪些状态已被检查,以及它们是否为True ,我想把州名缩写(列名)推入一个数组.
我有一个输出不同数量的数组的方法,如下所示:
[["unidentified object", 50], ["person", 22], ["car", 55], ["SUV", 32], ["large_vehicle", 76]]
[["unidentified object", 167], ["person", 104], ["car", 265], ["SUV", 129], ["large_vehicle", 355]]
[["unidentified object", 1963], ["person", 413], ["car", 1962], ["SUV", 996], ["large_vehicle", 2027]]
[["unidentified object", 1526], ["person", 373], ["car", 1560], ["SUV", 765], ["large_vehicle", 1706]]
[["unidentified object", 1234], ["person", 316], ["car", 1705], ["SUV", 895], ["large_vehicle", 1712]]
Run Code Online (Sandbox Code Playgroud)
但是,我真的希望有一个散列,其中包含所有数组中每个项目的总计,例如:
[{:class => "unidentified object", :count => 7234}, {:class => "person", :count => 5231}, {...}]
Run Code Online (Sandbox Code Playgroud)
那有意义吗?我完全需要了解数组和哈希方法的工作原理,但任何提示都会有所帮助.
所以这是一部分数学,部分红宝石,部分统计问题,我只是不知道从哪里开始这样的东西,因为它可能比我现在准备的要大得多,但是也许有人能够阐明如何为这类事情实施解决方案.
基本上,随着时间的推移,我有一组整数,说我的哈希看起来像:
{ :count => 20, :timestamp => 1304566372 }
{ :count => 23, :timestamp => 1304566382 }
{ :count => 23, :timestamp => 1304566392 }
{ :count => 24, :timestamp => 1304566402 }
{ :count => 25, :timestamp => 1304566412 }
{ :count => 22, :timestamp => 1304566422 }
{ :count => 12, :timestamp => 1304566432 } # <= outlier
{ :count => 21, :timestamp => 1304566442 }
{ :count => 20, :timestamp => 1304566452 }
Run Code Online (Sandbox Code Playgroud)
这组数据会大得多,但这可以作为一个例子,所以我想做的就是找到与平均值差别最大的结果,但整数将遵循一种曲线,所以你可以' t只是平均整套.图片就像对网站的访问者分析.
我想我的问题是,使用ruby,我可以使用数学来概括曲线并找出哪些项目与曲线的那一段上的平均值相差最远? …
说我有一个像这样的数组:
[
{"timestamp"=>"1", "count"=>4488.0},
{"timestamp"=>"2", "count"=>4622.0},
{"timestamp"=>"3", "count"=>4655.0},
{"timestamp"=>"4", "count"=>4533.0},
{"timestamp"=>"5", "count"=>4439.0},
{"timestamp"=>"6", "count"=>4468.0},
{"timestamp"=>"7", "count"=>4419.0},
{"timestamp"=>"8", "count"=>4430.0},
{"timestamp"=>"9", "count"=>4429.0},
{"timestamp"=>"10", "count"=>4502.0},
{"timestamp"=>"12", "count"=>4497.0},
{"timestamp"=>"13", "count"=>4468.0},
{"timestamp"=>"14", "count"=>4510.0},
{"timestamp"=>"15", "count"=>4547.0},
{"timestamp"=>"16", "count"=>4471.0},
{"timestamp"=>"17", "count"=>4501.0},
{"timestamp"=>"18", "count"=>4451.0},
{"timestamp"=>"19", "count"=>4453.0},
{"timestamp"=>"20", "count"=>4593.0},
{"timestamp"=>"21", "count"=>4540.0},
{"timestamp"=>"22", "count"=>4516.0},
{"timestamp"=>"23", "count"=>4494.0}
]
Run Code Online (Sandbox Code Playgroud)
我想循环它将每个x项目放在一个新的数组中,所以就像说我想写一个方法,接受一个类似的my_arr.skip(5)东西?我有点卡在这里,不知道该怎么办.任何帮助都将非常感激.
我很难在一个文件中包含一些视图助手/lib,比如说我有这个:
module TwitterPost
include ActionView::Helpers::NumberHelper
def update
number_with_delimiter(1234567)
end
end
Run Code Online (Sandbox Code Playgroud)
我明白了:
NoMethodError: undefined method `number_with_delimiter' for TwitterPost:Module
Run Code Online (Sandbox Code Playgroud)
但是在我的控制台中,我能够做到这一点include ActionView::Helpers::NumberHelper,然后我能够做到number_with_delimiter(1234567)并且它的工作正常.
为什么是这样?我需要包含ActionView::Helpers::NumberHelper在一堆不同的模型中,但我没有运气让它发挥作用.
我在ruby中有一个这样的字符串:"\x00\x00\xff"如何获得整数数组?我对如何正确表示字节感到困惑.
例如,我如何将其转换为这样的数组?
[ 0, 0, 255 ]
Run Code Online (Sandbox Code Playgroud)
更新
我已经尝试了下面的例子,这就是我遇到麻烦的地方,比如"\x00\x00\xff".bytes应该工作但是我得到了这个:
[92, 120, 52, 48, 92, 120, 102, 102, 92, 120, 53, 53]
Run Code Online (Sandbox Code Playgroud)
就像每个字符都返回它的字节代码而不是识别它们是单独的字节.如何防止字符串"\ x00\x00\xff"被解释为字面上的字符串?
首先,感恩节快乐.
所以我的问题是我的路线,我不清楚为什么id param实际上包含整个对象.Rails给了我这个错误:
user_url failed to generate from {:action=>"show", :controller=>"users", :id=>#<User id: 19, username: "Dr. Dorothy Buckridge", email: "kyra@hansenstehr.ca", crypted_password: nil, password_salt: nil, persistence_token: nil, created_at: "2009-11-10 19:38:31", updated_at: "2009-11-10 19:38:31", perishable_token: "", color: nil>}, expected: {:action=>"show", :controller=>"users"}, diff: {:id=>#<User id: 19, username: "Dr. Dorothy Buckridge", email: "kyra@hansenstehr.ca", crypted_password: nil, password_salt: nil, persistence_token: nil, created_at: "2009-11-10 19:38:31", updated_at: "2009-11-10 19:38:31", perishable_token: "", color: nil>}
Run Code Online (Sandbox Code Playgroud)
此行发生错误:
<%= link_to recipe.user.username, recipe.user, :class => "user" %>
Run Code Online (Sandbox Code Playgroud)
任何的想法?看起来它应该只生成该id属性的对象.
我的控制器是:
def index
@recipes …Run Code Online (Sandbox Code Playgroud) 我需要保存带有俄语名称或音译文件名的文件.我试试这个:
1)在document_uploader中:
def filename
@name ||= "#{Russian::transliterate(original_filename)}.#{file.extension}" if original_filename.present?
end
Run Code Online (Sandbox Code Playgroud)
2)在document.rb中:
我使用相同的逻辑创建before_create回调方法,但没有看到任何结果.
上传后的文件名称如下:"______________.doc"
我该做什么?
file-upload ruby-on-rails utf-8 character-encoding carrierwave
ruby ×7
arrays ×2
carrierwave ×1
css ×1
file-upload ×1
html ×1
javascript ×1
jquery ×1
postgresql ×1
select ×1
statistics ×1
utf-8 ×1