Questions tagged «activerecord»

Active Record是一种将域逻辑与单个对象中的存储抽象相结合的模式。使用此标记可以查询有关模式的问题,可以使用[rails-activerecord]来查询有关Rails ORM框架的问题。

5
使用Active Record,Rails和Postgres查找具有多个重复字段的行
使用Postgres和Activerecord在多列中查找具有重复值的记录的最佳方法是什么? 我在这里找到了这个解决方案: User.find(:all, :group => [:first, :email], :having => "count(*) > 1" ) 但这似乎不适用于postgres。我收到此错误: PG :: GroupingError:错误:列“ parts.id”必须出现在GROUP BY子句中或在聚合函数中使用

6
在模型中使用助手:如何包括助手依赖项?
我正在编写一个处理来自文本区域的用户输入的模型。遵循http://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-input的建议,我先使用before_validate清理模型中的输入,然后再保存到数据库中打回来。 我模型的相关部分如下所示: include ActionView::Helpers::SanitizeHelper class Post < ActiveRecord::Base { before_validation :clean_input ... protected def clean_input self.input = sanitize(self.input, :tags => %w(b i u)) end end 不用说,这是行不通的。尝试保存新帖子时出现以下错误。 undefined method `white_list_sanitizer' for #<Class:0xdeadbeef> 显然,SanitizeHelper创建了HTML :: WhiteListSanitizer的实例,但是当我将其混合到模型中时,找不到HTML :: WhiteListSanitizer。为什么?我该如何解决这个问题?

13
ActiveRecord.find(array_of_ids),保留顺序
当你Something.find(array_of_ids)在Rails中,所得到的数组的顺序不依赖的顺序array_of_ids。 有什么方法可以查找和保留订单吗? 我通过ATM手动根据ID的顺序对记录进行排序,但这有点la脚。 UPD:如果可以使用:orderparam和某种SQL子句指定顺序,那怎么办?

10
查找关联计数大于零的所有记录
我正在尝试做一些我认为很简单但似乎并非如此的事情。 我的项目模型有很多职位空缺。 class Project < ActiveRecord::Base has_many :vacancies, :dependent => :destroy end 我要获得所有至少有1个空缺的项目。我尝试过这样的事情: Project.joins(:vacancies).where('count(vacancies) > 0') 但它说 SQLite3::SQLException: no such column: vacancies: SELECT "projects".* FROM "projects" INNER JOIN "vacancies" ON "vacancies"."project_id" = "projects"."id" WHERE ("projects"."deleted_at" IS NULL) AND (count(vacancies) > 0)。


3
如何将记录添加到has_many:通过Rails中的关联
class Agents << ActiveRecord::Base belongs_to :customer belongs_to :house end class Customer << ActiveRecord::Base has_many :agents has_many :houses, through: :agents end class House << ActiveRecord::Base has_many :agents has_many :customers, through: :agents end 我该如何添加Agents模型Customer? 这是最好的方法吗? Customer.find(1).agents.create(customer_id: 1, house_id: 1) 上面的内容在控制台上工作正常,但是,我不知道如何在实际应用程序中实现这一点。 想象一下,为客户填写了一个表格,该表格也house_id作为输入。然后在控制器中执行以下操作? def create @customer = Customer.new(params[:customer]) @customer.agents.create(customer_id: @customer.id, house_id: params[:house_id]) @customer.save end …

4
如何在Rails中获取属性的原始值
有没有办法获取ActiveRecord属性的原始值(=从数据库加载的值)? 我想要观察员这样的事情 before_save object do_something_with object.original_name end 任务是在更新时从哈希表中删除对象(实际上,将其移动到表中的另一个键)。

4
如何通过与Mongoid和mongodb的关系来实现has_many:?
使用Rails指南中的修改示例,如何使用mongoid为关系“ has_many:through”关联建模? 挑战在于,mongoid不像ActiveRecord那样支持has_many:through。 # doctor checking out patient class Physician < ActiveRecord::Base has_many :appointments has_many :patients, :through => :appointments has_many :meeting_notes, :through => :appointments end # notes taken during the appointment class MeetingNote < ActiveRecord::Base has_many :appointments has_many :patients, :through => :appointments has_many :physicians, :through => :appointments end # the …

8
没有记录时使用nil的find()
在我当前的Rails程序中,当我使用类似 user = User.find(10) 当没有ID = 10的用户时,我将遇到类似以下的异常: ActiveRecord::RecordNotFound: Couldn't find User with ID=10 我可以得到nil而不是引发异常,所以当我做类似的事情时: unless user = Challenge.find(10) puts "some error msg" end 我只想在没有记录且不想使用开始/救援时得到nil 谢谢

8
如何确定在after_save中是否只是创建或更新记录
#new_record?函数确定记录是否已保存。但这总是错误的after_save。有没有一种方法可以确定记录是新创建的记录还是更新后的旧记录? 我希望不要使用其他回调,例如before_create在模型中设置标志或要求对数据库进行其他查询。 任何建议表示赞赏。 编辑:需要确定它after_save,对于我的特定用例,没有updated_at或没有updated_on时间戳

2
在Rails 4中使用has_many:through:uniq时弃用警告
在has_many:through中使用:uniq => true时,Rails 4引入了弃用警告。例如: has_many :donors, :through => :donations, :uniq => true 产生以下警告: DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following: has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment' should be rewritten as the …

5
Rails按属性值过滤对象数组
因此,我对数据库执行查询,并且有完整的对象数组: @attachments = Job.find(1).attachments 现在,我有对象,我不想执行另一个数据库查询的数组,但我想基于对数组筛选Attachment对象的file_type,这样我可以有一个列表attachments,其中文件类型为'logo',然后另一个列表attachments哪里文件类型是'image' 像这样: @logos = @attachments.where("file_type = ?", 'logo') @images = @attachments.where("file_type = ?", 'image') 但是在内存而不是数据库查询中。

1
如何在Rails的两列上实现唯一索引
我有一张桌子,我想在两列上添加唯一索引。这些列也被索引。所以我的问题是我是否可以删除仅用于一列的索引,或者是否必须使用所有三个索引: add_index "subscriptions", ["user_id"] add_index "subscriptions", ["content_id"] add_index "subscriptions", ["user_id"], ["content_id"], :unique => true


1
Rails如何跟踪数据库运行了哪些迁移?
根据Rails的文档:http://guides.rubyonrails.org/migrations.html “ Active Record跟踪已经运行了哪些迁移,因此您要做的就是更新源并运行rake db:migrate。” ActiveRecord实际上是如何做到的?Active Record在哪里存储数据? 我怀疑这可能存储在数据库本身中?在某处的桌子上。 在开发机器上,我运行了所有迁移。然后,我使用mysqldump复制了生产数据库。然后我运行“ rake db:migrate:status”,它正确显示了需要在生产数据库上运行的迁移。 我曾经认为ActiveRecord使用时间戳跟踪上一次迁移运行。但是我认为这是不对的,因为ActiveRecord可以正确运行从另一个代码分支合并的“较旧”迁移。 有内部知识的人可以详细说明吗?谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.