这可能是一个通用的OOP问题.我想根据它们的用法在接口和抽象类之间进行一般性比较.
什么时候想要使用接口?何时想要使用抽象类?
我知道ruby中没有抽象类的概念.但是,如果它需要实施,那该怎么办呢?我试过像......
class A
def self.new
raise 'Doh! You are trying to write Java in Ruby!'
end
end
class B < A
...
...
end
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实例化B时,它会在内部调用A.new哪个会引发异常.
此外,模块无法实例化,但也无法继承.使新方法私有也行不通.有什么指针吗?
我多次使用eval红宝石的功能.但我听说有人说evals很讨厌.当被问到为什么以及如何,我永远无法得到令人信服的理由不使用它.他们真的很讨厌吗?如果是,以什么方式?评估有哪些"更安全"的选择?
rails关联方法如何工作?让我们考虑这个例子
class User < ActiveRecord::Base
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
现在我可以做点什么了
@user = User.find(:first)
@user.articles
Run Code Online (Sandbox Code Playgroud)
这会抓取属于该用户的文章.到现在为止还挺好.
现在我可以继续在某些条件下对这些文章进行查找.
@user.articles.find(:all, :conditions => {:sector_id => 3})
Run Code Online (Sandbox Code Playgroud)
或者简单地声明和关联方法
class User < ActiveRecord::Base
has_many :articles do
def of_sector(sector_id)
find(:all, :conditions => {:sector_id => sector_id})
end
end
end
Run Code Online (Sandbox Code Playgroud)
并做
@user.articles.of_sector(3)
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,这find对ActiveRecord使用关联方法获取的对象数组有何影响?因为如果我们实现我们自己的User实例方法调用articles并编写我们自己的实现,它给出了与关联方法完全相同的结果,那么ActiveRecord对象的获取数组上的查找将不起作用.
我的猜测是,关联方法将某些属性附加到获取对象数组,从而可以使用find其他ActiveRecord方法进一步查询.在这种情况下,代码执行的顺序是什么?我怎么能验证这个?
我正在尝试使用attachment_fu为工作文件上传功能编写规范.但是,作者提供的用于测试的示例代码要求我要求action_controller/test_process以便我可以访问ActionController::UploadedStringIO类.我之前在rails 2.x中使用过这个,但对于rails 3,它无法找到test_process文件.
如何继续测试rails 3中的文件上传功能?
LinkedIn有这个很酷的功能,在访问某些用户的个人资料时,LinkedIn会提示你如何通过网络连接到该用户.
假设访问者和配置文件所有者是图的两个节点,其中节点表示用户,边表示友谊,一个简单的解决方案可以是从两个节点开始直到某个级别的bfs并查看是否存在任何交叉点.交叉点将是网络链路节点.
虽然这听起来很整洁,但问题在于,为了确定每个人的朋友,需要单独的数据库查询.当网络深度超过2级时,算法将是非常耗时的.有更好的有效替代方案吗?如果没有,我们如何才能增加更好的硬件支持(并行计算,网格,分布式数据库等)以减少计算所需的时间?
我正在使用JQuery UI插件blockUI阻止每个ajax请求的UI.它就像一个魅力,但是,当我正在进行ajax调用以获取自动完成建议项时,我不想阻止UI(或者至少不显示"请稍候"消息).我怎么做?我正在使用jquery自动完成插件来实现自动完成功能.
有没有办法告诉阻止UI插件不阻止UI自动完成?
是否有必要对ActiveRecord验证进行单元测试,或者它们已经过充分测试,因此足够可靠?
当我点击编辑某些文本时,Jeditable会在文本区域的实际文本周围插入额外的空格.如何修剪或实际修复此问题?
我正在尝试使用Ruby 以程序方式读取蓝牙低功耗传输数据.蓝牙低功耗技术不支持标准规范v4.0中的串行端口配置文件(SPP).
使用较旧的蓝牙通信方法,可以只读取蓝牙传入数据的串行端口(/dev/tty.Bluetooth-Incoming-Port).显然,这对蓝牙低功耗不起作用,因为它几乎完全不同.
我遇到了一些工具,如LightBlue和XCode硬件IO工具,用于读取上述蓝牙低功耗设备传输的数据,但我不确定它们是如何工作的.有人可以帮忙吗?
ruby ×3
activerecord ×2
jquery ×2
blockui ×1
bluetooth ×1
database ×1
eval ×1
graph ×1
hardware ×1
inheritance ×1
interface ×1
jeditable ×1
jquery-ui ×1
macos ×1
oop ×1
performance ×1
serial-port ×1
testing ×1
textarea ×1
unit-testing ×1