小编joe*_*lis的帖子

连接表上的Default_scope

我有一个如下模型设置:

class User
  has_many :items
  has_many :words, :through => :items
end

class Item
  belongs_to :user
  belongs_to :word

  default_scope where(:active => true)
end

class Words
  has_many :items
end
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是default_scope没有应用于以下关联:

 user.words
Run Code Online (Sandbox Code Playgroud)

而不是这个SQL:

SELECT `words`.* FROM `words` INNER JOIN `items` ON `words`.id = `items`.word_id WHERE ((`items`.user_id = 1)) AND ((`items.active = 1))
Run Code Online (Sandbox Code Playgroud)

我在日志中得到这个SQL:

SELECT `words`.* FROM `words` INNER JOIN `items` ON `words`.id = `items`.word_id WHERE ((`items`.user_id = 1)) 
Run Code Online (Sandbox Code Playgroud)

我认为这是因为默认范围适用于常规模型及其子关联,但不适用于连接表.

使连接表范围在关联之间工作而不需要指定它的正确Rails方法是什么?有人存在吗?

scope ruby-on-rails has-and-belongs-to-many has-many-through default-scope

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

语言如何被自己解释(如Rubinius)?

我已经使用Ruby的标准MRI实现在Ruby中编程了一段时间,但我一直对我听到的其他实现很好奇.

前几天我正在阅读Rubinius,一个用Ruby编写的Ruby解释器.我尝试在不同的地方查找它,但我很难弄清楚这样的事情究竟是如何起作用的.我在编译器或语言编写方面从未有过多少经验,但我真的很想知道它.

一种语言究竟如何被自己解释?编译中是否有一个基本步骤,我不明白这有什么意义?有人可以向我解释一下这就像我是一个白痴(因为那不会离基地太远)

ruby compiler-construction language-design rubinius self-interpreter

5
推荐指数
1
解决办法
597
查看次数

输入密码后,Net :: SSH sudo命令挂起

我一直在尝试使用Thor编写一个小型库来帮助我快速创建新项目和站点.我写了这个小方法:

def ssh(cmd)
  Net::SSH.start( server_ip, user, :port => port) do |session|
    session.exec cmd
  end
end
Run Code Online (Sandbox Code Playgroud)

在需要时帮助我在远程服务器上运行快速命令.

问题是当我需要在远程端的sudo下运行一个命令时,脚本似乎挂在我身上.例如,当执行此...时

ssh("sudo cp #{file_from_path} #{file_to_path}" )
Run Code Online (Sandbox Code Playgroud)

该脚本将提示我输入密码

[sudo] password for user:
Run Code Online (Sandbox Code Playgroud)

但是输入之后整个事情都会变得很糟糕.

有人会碰巧知道为什么它会完全挂起,我可以做些什么来在Net :: SSH(或其他替代方案)下的远程服务器上运行sudo命令?

*注意:在建议之前,我最初开始将这个库作为Capistrano下的食谱编写,直到我遇到Thor,并认为这是一个尝试它的好机会.如果需要的话,我不反对将整个事情切换回Capistrano,但如果没有一种简单的方法在远程服务器上运行sudo命令,我会感到非常惊讶.

ruby sudo net-ssh sudoers thor

5
推荐指数
4
解决办法
1万
查看次数

Spork Capybara,config.cache_classes冲突

我正在尝试使用TestUnit设置Spork和Capybara,并且遇到了test.rb配置问题.

问题是Spork要求将config.cache_classes设置为false,以便在运行测试时可以反映模型中的更改,而无需一直重置Spork.

另一方面,Capybara似乎要求将config.cache_classes设置为true,否则集成测试似乎不起作用.

我只是在寻找任何可能的解决方案/解释.这是仅存在于TestUnit中的东西,还是这可能是一个错误,我应该这样报告?任何帮助将不胜感激!

ruby-on-rails capybara spork

5
推荐指数
1
解决办法
1277
查看次数

什么更容易访问,文本缩进:-9999px或只是使用带有alt标签的img?

我注意到最近有很多关于可访问性和SEO最佳实践的文章质疑旧CSS text-indent: -9999px技巧的用法,我很好奇这里最好的做法是什么.

谷歌的一名员工表示,这并不是很好,alt图像上的标签据说对于屏幕阅读器来说也不错.这有什么真相,我应该改变我在网站上处理一些图像的方式吗?

html css seo

3
推荐指数
1
解决办法
278
查看次数

在Rails中处理大型记录集

我正在尝试对比正常数据集(超过2m条记录)更大的数据执行日常操作。但是,Rails似乎需要很长时间才能对此类数据集执行操作。像

Dataset.all.each do |data|
  ...
end
Run Code Online (Sandbox Code Playgroud)

需要很长时间才能完成(我想这是因为它不能一次将所有项目都放入内存,对吗?)。

有人对我如何处理这种情况有任何策略吗?我知道SQL可能会加快这一过程,但是我希望使用Rails环境,因为与仅使用SQL语句相比,我可以对数据做更多复杂的事情。

database scaling ruby-on-rails

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