草庐IT

recordings

全部标签

ruby-on-rails - Rails Active Record 在 before_create 回调中取消(保存或创建)而不引发异常

实际上,我想测试一个模型回调。system_details.rb(模型)classSystemDetailprevent_if_same方法工作正常并按预期工作,但它在返回false时引发异常ActiveRecord::RecordNotSaved,并且该异常中断了rspec测试.我想要的是,它应该在不引发异常的情况下静默取消保存。system_detail_spec.rb(rspec)require'rails_helper'RSpec.describeSystemDetail,:type=>:modeldocontext'#agent'doit'Checksbrowserinsta

ruby-on-rails - Active Record 序列化 attr 丢失字符串编码(可能是 YAML 问题),解决方法?

我在使用Rails2.3.8和Ruby1.9.1时遇到问题事件记录中的序列化属性不保留字符串编码。潜在的问题可能是yaml,但我想知道是否有人有关于如何处理这个的任何好主意。我正在开发的应用程序有许多序列化字段,其中一些包含深层结构数组和哈希。取回一个ASCII-8位字符串(实际上是UTF-8)在这些结构的深处会在以后造成严重破坏......也许最好用例子来说明,如果我将l保存到一个序列化的属性中一个事件记录模型,我会在从数据库中读取数据时返回l2。>>l=>["English","Türkçe","Русский"]>>l.map(&:encoding)=>[#,#,#]>>l.ma

ruby - 将一组 Active Record 对象转换为散列

我有一组ActiveRecord对象。我想创建一个用作索引的哈希。我的ActiveRecord对象具有属性name和value。理想情况下,我想遍历数组并创建一个散列,该散列将创建类似于以下内容的内容:hash[name]=value创建数组foo以创建与上述类似的散列的最佳方法是什么? 最佳答案 像这样的东西会起作用:hash={}Model.all.map{|i|hash[i.id]=i}hash应该评估为:{:1=>#,:2=>#,...} 关于ruby-将一组ActiveReco

ruby-on-rails - Rails 3 Active Record 关系顺序 : Use hash instead of string

要在Rails3中对关系进行排序,我们必须这样做:User.where(:activated=>true).order('idASC')但我认为:User.where(:activated=>true).order(:id=>:asc)会更有意义,因为转义字段名称的方式应该取决于适配器(SqlLitevsMysqlvsPostgreSQL),对吧?有类似的东西吗? 最佳答案 据我所知,ActiveRecord中没有内置此语法的选项,但添加一个应该不难。我在lib/active_record/relation/query_method

ruby-on-rails - ruby /rails : how can I create multiple records in salesforce with one API call via the rforce gem?

我正在使用rforcegem在我的salesforce数据库中创建记录。rforce文档中创建记录的例子是:opportunity=[:type,'Opportunity',:accountId,account_id,:amount,'10.00',:name,'FakeyMcFakerson',:closeDate,'2008-07-04',:stageName,'ClosedWon']binding.create:sObject=>opportunitySalesforceAPI调用create()允许一次创建多个对象,但我正在努力实现这一点。我尝试了以下调用:binding.cr

ruby-on-rails - 使用 Active Record exists 有什么区别?与 find_by 相比?

在我的模型中,我首先检查数据库中是否存在Sudoku记录,然后再获取它的solution或创建它。ifSudoku.exists?(puzzle:puzzle)returnSudoku.find_by(puzzle:puzzle).solutionelse**solveitandsaveitintothedb**end这样做有什么区别:ifSudoku.find_by(puzzle:puzzle)returnSudoku.find_by(puzzle:puzzle).solutionelse**solveitandsaveitintothedb**end的日志是否存在?SudokuEx

ruby-on-rails - 如何使用 Rails 和 Active Record 在单个列中找到紧密匹配项?

我知道使用基本SQL和事件记录查询语言在单个表中查找精确重复记录的方法。但我需要知道如何执行紧密匹配搜索,我想考虑拼写错误。在Rails应用程序中查找潜在重复项和接近匹配项的最佳方法是什么?我使用MySQL作为数据库。编辑:我要匹配的数据类型是字符串,它们作为字符串存储在数据库中。 最佳答案 我认为thinking_sphinx和Sphinx对你来说可能是两个有趣的工具。你想要的是由一组称为全文搜索的功能提供的,这是一个需要在单个答案中解释的大主题,但你可能想了解“词接近度”和“词位”

ruby-on-rails - has_many autosave_associated_records_for_*

我正在尝试关联现有记录,同时仍然能够添加新记录。以下不起作用,但非常接近我需要的。如何完成关联现有记录和创建新记录?has_many:comments,:through=>:commentings,:source=>:commentable,:source_type=>"Comment"accepts_nested_attributes_for:comments,:allow_destroy=>truedefautosave_associated_records_for_commentscomments.eachdo|comment|ifexisting_comment=Comment

ruby-on-rails - Ruby On Rails 4 会默认将 config.active_record.whitelist 属性设置为 true 吗?

RoR4是否会默认将config.active_record.whitelist_attributes设置为true和其他一些证券值?现在我认为RoR已经足够简化,可以出于安全原因集成此类约束。谢谢 最佳答案 到目前为止,是的——检查一下:https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/app/templates/config/application.rb#L57#Enforcewhitelistmodeformassass

ruby-on-rails - 在 Rails 5 Application Record 类中包含一个模块

我正在使用ApplicationRecord来简化整个应用程序的共享逻辑。这是一个为bool值及其逆函数编写作用域的示例。这很有效:classApplicationRecord{where("#{attr}":true)})scope(opposite,->{where("#{attr}":false)})ifopposite.present?endendclassUser我的ApplicationRecord类已经足够长,所以我可以将它分解成单独的模块并根据需要加载它们。这是我尝试的解决方案:classApplicationRecord{where("#{attr}":true)})