有没有办法获得ActiveRecord属性的原始值(=从数据库加载的值)?
在观察者中我想要这样的东西
before_save object
do_something_with object.original_name
end
Run Code Online (Sandbox Code Playgroud)
任务是在更新时从哈希表中删除对象(事实上,将其移动到表中的另一个键).
当你Something.find(array_of_ids)在Rails中,所得到的数组的顺序不依赖的顺序array_of_ids.
有没有办法找到并保存订单?
ATM我根据ID的顺序手动对记录进行排序,但这有点蹩脚.
UPD:如果可以使用:orderparam和某种SQL子句指定顺序,那么如何?
class A
private
def initialize
puts "wtf?"
end
end
A.new #still works and calls initialize
Run Code Online (Sandbox Code Playgroud)
和
class A
private
def self.new
super.new
end
end
Run Code Online (Sandbox Code Playgroud)
不起作用
那么正确的方法是什么?我想new私有化并通过工厂方法调用它.
我们有一个Web应用程序,它使用Java applet来操作本地磁盘上的文件.我们开发它已经有一段时间了,我们已经知道所有类型的applet可能与现代操作系统和浏览器以及最新的Java版本和新的安全限制有关.
昨天,Apple推出了新的Mac OS 10.9 Mavericks,推出了新的Safari浏览器(7.0).我在Safari 7/Mac OS X 10.9下测试了我们的Web应用程序,发现Safari 7(可能是?)阻止从Java applet访问本地文件.
尽管applet(使用有效的Thawte证书签名,并且满足Java 7u45特定的所有安全性要求)以无限制模式运行,并且可以完全访问本地文件系统(Java安全提示符说),但在尝试访问本地文件时,它会捕获fileNotFoundException :
java.io.FileNotFoundException: /Users/yury/Pictures/Paris 2012/L1050258.jpg (Operation not permitted)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at com.trackntag.a.v.a(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
此外,当从applet打开Java文件打开对话框时,它不显示任何文件,文件夹选择器中的文件夹没有任何图标(通常他们应该有它们).当您遍历到根文件夹时,您可以看到顶级文件夹(bin,cores,dev,home等),但您无法浏览它们.
applet可以在同一台机器上使用最新的Firefox 24 for Mac访问本地文件(Java 7u45,Mac OS X 10.9).与Safari 6和Mac OS X 10.8.5相同,更不用说各种配置的Linux和Windows机器:访问本地文件没有问题.
综上所述,我必须得出结论,我们遇到了Safari 7特有的问题.
你对这个问题有什么看法吗?任何想法都非常感谢.
干杯,尤里
编辑(答案):在Safari 7中有一个新的安全设置:安全/不安全模式(我认为它只适用于Java插件).您可以允许Java插件在不安全模式下为单个网站或所有站点工作.在不安全模式下,applet将具有对本地文件系统的无限制访问权限.
看来这个安全设置在Java自己的安全设置(受限制/不受限制的访问)之上工作.
此设置可通过Safari首选项/安全选项卡/ Internet插件获得:管理网站设置(然后选择Java插件).
所以,一旦我已经回答了我自己的原始问题,我宁愿将其改为:是否可以设置不安全模式或覆盖特定网站/ URL的安全模式而无需要求用户设置此安全首选项?也许Apple开发者证书之类的东西会有帮助吗
再次感谢!
我有一个Rails项目,里面有很多西里尔字符串.
它在Ruby 1.8上运行良好,但Ruby 1.9假定源文件是US-ASCII编码的,除非您# encoding: utf-8在源文件的顶部提供注释.此时不考虑文件US-ASCII.
是否有一种更简单的方法来告诉Ruby"这个应用程序是UTF8编码的.除非另有说明,否则请将所有和任何包含的源文件视为UTF8"?
更新:
我写了" 如何在Ruby 1.9文件中自动插入编码:UTF-8指令 ",如果需要,会自动附加编码指令.
默认情况下,ActiveRecord从相应的数据库表中获取所有字段,并为所有字段创建公共属性.
我认为不公开模型中的所有属性是合理的.更重要的是,暴露出用于内部使用的属性会使模型的界面混乱,并违反封装原则.
那么,有没有办法从字面上制作一些属性private?
或者,也许我应该转向其他ORM?
我需要解析一个命令行
script.rb <mandatory filename> [options]
Run Code Online (Sandbox Code Playgroud)
用optparse.
当然我可以写一些自定义代码来处理文件名,然后传递ARGV给optparse,但也许有一种更简单的方法呢?
编辑:还有另一种解析这样一个命令行的hacky方法,那就是传递['--mandatory-filename'] + ARGV给optparse,然后处理--mandatory-filename选项.
我想对查询参数进行一些清理.
我解析查询CGI.parse,然后我删除一些参数,但我找不到相反的方法来构建查询.
我真的不想做类似的事情
params.map{|n,v| "#{CGI.escape n}=#{CGI.escape v.to_s}"}.join("&")
Run Code Online (Sandbox Code Playgroud)
必须有一个更简单的方法.在那儿?
我试图解决的核心问题是:每次启动程序时都有一个settings从a加载的对象settings.json file.
我最初使用的代码就像
(def settings (load-settings "settings.json"))
但在部署期间,我惊讶地发现init表单正在编译时而不是运行时进行评估 - 编译失败,因为没有settings.json文件到位.
所以问题的Y部分是 - 我可以延迟初始化形式的评估而不使用引用或以其他方式使对象的使用复杂化吗?或者我在这里错过了一些核心概念?
我想在Ruby on Rails应用程序中实现测量单元首选项.
例如,用户应该能够在以英里或公里为单位显示距离之间进行选择.而且,显然,不仅要显示,还要输入值.
我想所有的值都应存储在一个全局测量系统中,以简化计算.
有没有针对此的直接解决方案?或者我应该写自己的?
ruby localization ruby-on-rails internationalization units-of-measurement
ruby ×6
activerecord ×3
applet ×1
cgi ×1
clojure ×1
constructor ×1
encoding ×1
java ×1
localization ×1
macos ×1
optparse ×1
private ×1
ruby-1.9 ×1
safari ×1
utf-8 ×1