我验证了架构中的所有整数字段.我应该对datetime字段做同样的事情吗?
在执行此操作时似乎没有内置到rails中的验证(如果它应该完成的话).我已经看到了几个可以添加此功能的宝石,但这是一个很好的做法,开始或完全没必要吗?
以下ruby代码正在替换文件的全部内容.我怎样才能附加到文件的末尾并保持其现有内容的完整性?
File.open("db/seeds.rb", "w") do |f|
f.write "Blog::Engine.load_seed"
end
Run Code Online (Sandbox Code Playgroud) 在下面的查询中,我将对象作为返回值(因此使用.nil检查没有结果?工作正常:
store = Store.where(:some_id => myobj.some_id.to_i).first
unless store.nil?
Run Code Online (Sandbox Code Playgroud)
但是在下一个代码中,我得到了ActiveRecord :: Relation的返回类型并使用.nil进行检查?失败!
existing_store = Store.where(:some_str => myobj.some_str).not_hidden().active()
if existing_store.nil?
Run Code Online (Sandbox Code Playgroud)
那是为什么?
2.在这种情况下,如何检查无结果?
3.使用find()或where()时,如何检查一般没有记录返回
Rails 3.1确实令人困惑.
1.是否有更简单的方法来编写这样的多个条件?
self.location = ""
self.location += geo["city"].to_s + ", " if geo["city"].present?
self.location += geo["regionName"].to_s + ", " if geo["regionName"].present?
self.location += geo["countryName"].to_s + ", " if geo["countryName"].present?
Run Code Online (Sandbox Code Playgroud)
2.还删除任何尾随逗号?
更新: 以下是我正在尝试使用Vee解决方案的确切代码
geo = JSON.parse(open('http://www.geoplugin.net/json.gp?ip=127.0.0.1').read)
fields_to_select = ["geoplugin_city", "geoplugin_regionName", "geoplugin_countryName"]
location = geo.select { |elem| fields_to_select.include? elem }.values.compact.join(', ')
Run Code Online (Sandbox Code Playgroud) data = {"B"=>"bb", "C"=>"cc", "A"=>"aa", "D"=>"dd", "E"=>"", "F"=>nil}
fields_to_select = ["A", "B", "C"]
str = data.select { |elem| fields_to_select.include? elem }.values.compact.reject(&:empty?).join(', ')
Run Code Online (Sandbox Code Playgroud)
这将返回,bb, cc, aa因为这是它在数据哈希中的顺序.
有没有办法根据顺序创建字符串fields_to_select?
这样它就会回归 aa, bb, cc
我想为paper_trail版本创建以下方法:
def user
User.find self.whodunnit.to_i
end
Run Code Online (Sandbox Code Playgroud)
这样我就可以在我的应用程序中自然地访问版本的用户,就好像它有belongs_to关系一样.
我应该在哪里放置此功能(文件夹和文件名)以覆盖/添加到paper_trail的版本模型?
如何在以下html中以"user_"开头的所有行上执行"单击"操作:
<div id="rows">
<div id="user_1"></div>
<div id="user_2"></div>
<div id="user_3"></div>
<div id="user_4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)