我有一个如下模型设置:
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
我已经使用Ruby的标准MRI实现在Ruby中编程了一段时间,但我一直对我听到的其他实现很好奇.
前几天我正在阅读Rubinius,一个用Ruby编写的Ruby解释器.我尝试在不同的地方查找它,但我很难弄清楚这样的事情究竟是如何起作用的.我在编译器或语言编写方面从未有过多少经验,但我真的很想知道它.
一种语言究竟如何被自己解释?编译中是否有一个基本步骤,我不明白这有什么意义?有人可以向我解释一下这就像我是一个白痴(因为那不会离基地太远)
ruby compiler-construction language-design rubinius self-interpreter
我一直在尝试使用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命令,我会感到非常惊讶.
我正在尝试使用TestUnit设置Spork和Capybara,并且遇到了test.rb配置问题.
问题是Spork要求将config.cache_classes设置为false,以便在运行测试时可以反映模型中的更改,而无需一直重置Spork.
另一方面,Capybara似乎要求将config.cache_classes设置为true,否则集成测试似乎不起作用.
我只是在寻找任何可能的解决方案/解释.这是仅存在于TestUnit中的东西,还是这可能是一个错误,我应该这样报告?任何帮助将不胜感激!
我注意到最近有很多关于可访问性和SEO最佳实践的文章质疑旧CSS text-indent: -9999px技巧的用法,我很好奇这里最好的做法是什么.
谷歌的一名员工表示,这并不是很好,alt图像上的标签据说对于屏幕阅读器来说也不错.这有什么真相,我应该改变我在网站上处理一些图像的方式吗?
我正在尝试对比正常数据集(超过2m条记录)更大的数据执行日常操作。但是,Rails似乎需要很长时间才能对此类数据集执行操作。像
Dataset.all.each do |data|
...
end
Run Code Online (Sandbox Code Playgroud)
需要很长时间才能完成(我想这是因为它不能一次将所有项目都放入内存,对吗?)。
有人对我如何处理这种情况有任何策略吗?我知道SQL可能会加快这一过程,但是我希望使用Rails环境,因为与仅使用SQL语句相比,我可以对数据做更多复杂的事情。