草庐IT

activeRecord

全部标签

mysql - ROR 中的数据库安全并发

试图弄清楚RubyOnRails中如何处理并发。如何获取一段代码来锁定数据库中的行并在需要时强制回滚?更具体地说,有没有办法强制某一段代码完全完成,如果不回滚?我想在我的项目中为交易添加历史记录,但我不想在没有保存历史记录的情况下提交事务,因此如果服务器介于两个操作(保存事务和保存历史记录)之间,数据库可能会进入非法状态。 最佳答案 你想看ActiveRecordTransactions和PessimisticLocking.Account.transactiondoaccount=Account.find(account_id)a

mysql - 在 ActiveRecord 中高效地批量更新?

如何高效地批量更新ActiveRecord中的记录?我正在尝试填充一个依赖于另一列的列。现在这是我的代码:Tweet.find_in_batchesdo|group|to_be_saved=[]group.eachdo|t|t.creation_date_posix=DateTime.strptime(t.creation_date_str,'%m/%d/%Y%H:%M').to_time.to_ito_be_saved但是并没有提高效率。显然transaction不是正确的方法。有什么想法吗? 最佳答案 一般来说,您可以使用upd

Mysql 5.7 json 数据类型,在 Rails 5 中使用 activerecord 查询

我正在使用Rails5rc1制作一个应用程序。Rails5支持mysql5.7json数据类型。add_column:organizations,:external,:json假设该列中的值如下:+---------------------------+|external|+---------------------------+|{"id":10,"type":"mos"}|+---------------------------+要在外部列中搜索特定的“id”和“type”,我在mysql中使用以下查询:selectexternalfromorganizationswhereJSO

mysql - 只有一行的 Rails ActiveRecord 数据库

有没有办法让数据库只允许一行(例如,对于站点范围的设置)? 最佳答案 classWhatever0endend 关于mysql-只有一行的RailsActiveRecord数据库,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14403247/

mysql - ActiveRecord::Base.connection.execute 受影响的行

使用Rails4.1.1,使用mysql2适配器:我正在使用ActiveRecordconnection在MySQL表中执行多次插入:ActiveRecord::Base.connection.execute%Q{INSERTINTOtable(`user_id`,`item_id`)SELECT1,idFROMitemsWHEREitems.conditionISNOTNULL}这工作正常,完成工作,并返回nil。有没有办法获取受影响的行数?(避免需要执行另一个查询)我找到了execute的文档方法有点稀疏。 最佳答案 您可以使用

mysql - ActiveRecord:查询列不在数组中的位置

ActiveRecord有一个非常简洁的语法来查询列等于给定数组中的任何值的记录:举个简单的例子,假设您有10个产品,其ID为1,2,3,4,5,6,7,8,9,10。Product.where(id:[2,3,4,5,6])将返回产品2、3、4、5和6。是否有一个ActiveRecord等价于查询列不等于数组中的任何值的产品?类似于:Product.where('id!=?',[2,3,4,5,6])除了它确实有效...在这种情况下,当您传递[2,3,4,5,6]时,它将返回产品1、7、8、9和10。编辑我需要一个Rails3解决方案!!! 最佳答案

mysql - 使用 Rails 查询返回单个字段

我在处理本应如此简单的事情时遇到了麻烦,但我不知道自己做错了什么。我只是想做一个返回单个字段而不是Rails3中的完整记录的查询。模型方法defself.find_user_username(user_id)user_name=User.select("user_name").where(user_id)returnuser_nameend我正在看Rails指南(http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields)它只是说(whereviewable_by,locked=

mysql - 如何使用 MySQL 2 在 Rails 3 项目中使用 WHERE IN?

我是Rails的新手,对SQL类语言的经验很少。我正在使用MySQL2开发Rails3项目我这里有一个通用的SQL语句,我想在我们的两个数据库上都使用它。有什么方法可以仅通过ActiveRecord功能来做到这一点吗?SELECT*FROMMyRecordsWHERE(f1,f2,f3,f4)IN(SELECTf1,f2,f3,f4FROMMyRecordsGROUPBYf1,f2,f3,f4HAVINGcount(*)=1);换句话说,我正在尝试执行“WHEREIN”语句(坦率地说,我什至不知道WHEREIN语句的作用,只是这个答案满足了我的需要:我如何(或者我可以)在多列上选择DI

sql - 复杂的 Rails 查询 - 联合?子选择?我还能使用 named_scope 吗?

我喜欢Rails的部分原因是我讨厌SQL-我认为它更像是一种汇编语言,应该使用更高级别的工具(如ActiveRecord)进行操作。然而,我似乎已经达到了这种方法的极限,而且我对SQL的理解超出了我的理解范围。我有一个包含很多子记录的复杂模型。我还有一组30-40个named_scopes来实现来自客户端的业务逻辑。这些作用域有条件地链接在一起,这就是为什么我有那些joins_作用域,这样连接就不会被破坏。我有几个不能正常工作,或者至少不是客户希望他们工作的方式。这是模型结构的一个粗略概念,其中包含一些命名范围(示例中并非全部需要),它们说明了我的方法并指出了我的问题。(请原谅任何语法

mysql - ActiveRecord::StatementInvalid: Mysql2::Error: 无法删除或更新父行 - Rails 4.2.6

需要解决的错误:ActiveRecord::StatementInvalid:Mysql2::Error:Cannotdeleteorupdateaparentrow:aforeignkeyconstraintfails(slap_chat_development.chatrooms,CONSTRAINTfk_rails_496733c195FOREIGNKEY(group_id)REFERENCESgroups(id)):DELETEFROMgroupsWHEREgroups.id=1问题是:谁能指导我应该从哪里修复这个错误。据我所知,groups和chatrooms表之间的关系仍然