标签: activerecord

验证多列的唯一性

是否有一种轨道方式来验证实际记录是唯一的而不仅仅是一列?例如,友谊模型/表不应该具有多个相同的记录,例如:

user_id: 10 | friend_id: 20
user_id: 10 | friend_id: 20
Run Code Online (Sandbox Code Playgroud)

validation activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord

188
推荐指数
2
解决办法
7万
查看次数

delete_all vs destroy_all?

我正在寻找从表中删除记录的最佳方法.例如,我有一个用户,其用户ID跨越许多表.我想删除此用户以及在所有表中具有其ID的每个记录.

u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Run Code Online (Sandbox Code Playgroud)

这工作并从所有表中删除用户的所有引用,但我听说这destroy_all是非常重的过程,所以我尝试了delete_all.它只从用户自己的用户表中删除用户,并将id所有其他表中的用户设为null,但保留其中的记录.有人可以分享执行此类任务的正确流程吗?

我看到在所有相关对象上destroy_all调用该destroy函数,但我只是想确认正确的方法.

ruby database activerecord ruby-on-rails

182
推荐指数
3
解决办法
9万
查看次数

Rails 3迁移:添加引用列?

如果我创建一个新的rails 3迁移(例如)

rails g migration tester title:tester user:references
Run Code Online (Sandbox Code Playgroud)

,一切正常......但是,如果我添加一个包含以下内容的列:

rails g migration add_user_to_tester user:references
Run Code Online (Sandbox Code Playgroud)

参考字段无法识别.简而言之,问题是:如何从命令行向rails迁移添加引用列?

migration activerecord ruby-on-rails

162
推荐指数
8
解决办法
11万
查看次数

如何使用activerecord获取最后N条记录?

随着:limit查询,我会得到前N个记录.获得最后N条记录的最简单方法是什么?

ruby activerecord ruby-on-rails

156
推荐指数
6
解决办法
12万
查看次数

覆盖ActiveRecord属性方法

我正在谈论的一个例子:

class Person < ActiveRecord::Base
  def name=(name)
    super(name.capitalize)
  end
  def name
    super().downcase  # not sure why you'd do this; this is just an example
  end
end
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我刚刚阅读了ActiveRecord :: Base文档中覆盖属性方法的部分,并建议使用read_attributewrite_attribute方法.我认为在上面的例子中我所做的事情肯定有问题; 否则,为什么他们会将这些方法作为覆盖属性方法的"正确方法"?他们也在逼迫一个更丑陋的习语,所以必须有充分的理由......

我真正的问题是:这个例子有问题吗?

oop activerecord ruby-on-rails

147
推荐指数
3
解决办法
6万
查看次数

你能在Rails中获得DB用户名,密码,数据库名称吗?

我正在编写一个rake任务,在Rails/ActiveRecord之外执行一些数据库工作.

有没有办法获得当前环境中的数据库连接信息(主机,用户名,密码,数据库名称)database.yml

我想得到它所以我可以用它来连接这样......

con = Mysql.real_connect("host", "user", "pw", "current_db")
Run Code Online (Sandbox Code Playgroud)

ruby database environment activerecord ruby-on-rails

140
推荐指数
5
解决办法
6万
查看次数

belongs_to和has_one有什么区别?

a belongs_to和a有has_one什么区别?

阅读Ruby on Rails指南并没有帮助我.

activerecord ruby-on-rails

140
推荐指数
3
解决办法
4万
查看次数

数量,大小,长度...... Ruby中的选择太多了?

我似乎无法在此找到明确的答案,我想确保我理解为"第n级":-)


    a = { "a" => "Hello", "b" => "World" }
    a.count  # 2
    a.size   # 2
    a.length # 2

    a = [ 10, 20 ]
    a.count  # 2
    a.size   # 2
    a.length # 2

那么使用哪个?如果我想知道a是否有多个元素那么它似乎并不重要但我想确保我理解真正的区别.这也适用于数组.我得到了相同的结果.

另外,我意识到计数/大小/长度与ActiveRecord有不同的含义.我现在最感兴趣的是纯Ruby(1.92),但如果有人想要了解AR的差异,那也会受到赞赏.

谢谢!

ruby size activerecord content-length

139
推荐指数
4
解决办法
7万
查看次数

你如何在Rails中发现模型属性?

我发现很难很容易地看到我的所有模型类中存在哪些属性/属性,因为它们没有在我的类文件中明确定义.

为了发现模型属性,我保持schema.rb文件打开并在它和我正在编写的代码之间进行翻转.这很有效,但是很笨重,因为我必须在读取模式文件以获取属性,模型类文件以检查方法以及我正在编写的任何新代码来调用属性和方法之间切换.

我的问题是,当您第一次分析Rails代码库时,如何发现模型属性?你是否一直打开schema.rb文件,还是有更好的方法不涉及在模式文件和模型文件之间不断跳转?

activerecord ruby-on-rails

135
推荐指数
5
解决办法
9万
查看次数

使用Rails序列化将哈希保存到数据库

我试图在我的rails应用程序中将哈希映射ID保存到多次尝试中.我迁移到数据库以适应这个新列:

class AddMultiWrongToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :multi_wrong, :string
  end

  def self.down
    remove_column :users, :multi_wrong
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的模型中,我有:

class User < ActiveRecord::Base 
 serialize :multi_wrong, Hash
end
Run Code Online (Sandbox Code Playgroud)

但是,当我使用rails控制台通过执行以下操作来测试时:

user = User.create()
user.multi_wrong = {"test"=>"123"}
user.save
Run Code Online (Sandbox Code Playgroud)

输出为false.这里出了什么问题?

ruby serialization activerecord ruby-on-rails

135
推荐指数
3
解决办法
9万
查看次数