Tag: activerecord

在不重新查询数据库的情况下重新排序rails中的活动记录?

例如,假设我有一个名为Products的模型,在Products控制器中,我有product_list视图的以下代码来显示已排序的产品。 @products = Product.order(params[:order_by]) 让我们假设在product_list视图中,用户可以使用下拉列表按价格,评级,权重等进行排序。 数据库中的产品不会经常更改。 我很难理解的是,每次用户选择新的order_byfilter时rails是否必须查询,或者rails是否能够以某种方式缓存活动记录以便在服务器端重新排序? 有没有办法写它,所以如果用户排序,rails将不会重新查询结果? (即,如果产品表不经常更改,那么如果用户只想按其他变量排序,则无法进行查询) 谢谢,

accept_nested_attributes_for:allow_destroy,:_ destroy无效

我有一个Rails 4.1应用程序,它使用了一些值得注意的技术。 简单的forms,茧 我无法销毁嵌套属性的记录。 基于一些冗长的研究,我相信我的代码是正确的,但我可能会遗漏一些愚蠢的东西。 模型 has_many :staff_services_joins, :dependent => :destroy has_many :services, :through => :staff_services_joins accepts_nested_attributes_for :staff_services_joins, :allow_destroy => true 这有点不正统,但我在连接模型上有两个组件,它们不是外键,需要设置。 这就是为什么我接受连接模型的嵌套属性而不是服务模型。 控制器方法 def update ap staff_params # if @staff_member.update_with_account staff_params, params[:password] if @staff_member.update_attributes staff_params flash[:notice] = ‘Successfully updated staff member! :)’ redirect_to vendor_store_staff_path current_store, @staff_member else flash[:error] = ‘Failed to update staff member […]

在activerecord中按外键排序

我有桌子Foo和Bar 。 Foo有一个Bar 。 当我查询Foo ,如何通过Bar表中的日期列进行排序? 谢谢

database.yml在Rails 4中的ActiveRecord中加载了哪里?

ActiveRecord代码库中的哪一行(或方法)是否加载了Rails应用程序的config / database.yml? (我特别关注4.0.5,但是如果有人有关于= = 4.0.5的任何信息,那会很有启发性)?

has_many关系的动态class_name

我正在尝试与动态class_name属性建立has_many关系 class Category ( lambda { return self.item_type } ) end 要么 class Category self.item_type end 但我得到了错误: can’t convert Proc into String 要么 undefined method `item_type’ for # 编辑我有两种不同类型的广告 LeaseAd , RentAd使用单表inheritance实现 然后我有广告Category作为嵌套集。 我想指定哪种类型的广告属于Category对象。 感谢您的任何帮助!

ActiveRecord包括不使用外键

我很难让表格关联正常工作。 我有2个类(表),我需要彼此关联。 class CaseModel < ActiveRecord::Base self.primary_key = 'seq_id' has_many :model, foreign_key: 'model_seq_id' end class Model {includes(:case_model)} end 当我运行Model.with_case_info我得到以下SQL: SELECT “CASE_MODEL”.* FROM “CASE_MODEL” WHERE “CASE_MODEL”.”SEQ_ID” IN (results from above sql) 我正在寻找的是 SELECT “CASE_MODEL”.* FROM “CASE_MODEL” WHERE “CASE_MODEL”.”MODEL_SEQ_ID” IN (results from above sql) 任何帮助,将不胜感激

如何在ActiveRecord 3.x中获取所有范围列表

我正在使用ActiveRecord和Rails 3。 我在我的模型中定义了范围。 如何获取该模型的所有范围列表? 以前我可以使用Model.scopes 或者我可以检查范围是否已定义? Model.scope_defined?(“scope_name”)类的Model.scope_defined?(“scope_name”) 提前致谢。

你如何改变你的Rails应用程序数据?

我已经看到很多关于ActiveRecord迁移的讨论,以及它们是否应该用于更改应用程序中的数据,有些人说是,有些人说不。 我的问题是,如果您没有使用迁移来执行此操作,那么您使用的是什么? 你写的另一个脚本? 我之后提出了关于替代方法的建议以及为什么它们可能比仅仅使用迁移更好。

这个Rails4错误是什么意思? 致命:exception重新进入……“在rollback_active_record_state中救援!”

我在Rails 4预约安排应用程序中遇到了一些错误,我似乎无法纠正或找出根本原因。 我的种子文件一直以众所周知的“错误,堆栈级别太深”而破坏。 但是,当我运行该方法时,我相信它正在破坏,我得到了这个不同的错误: 播种时间为工作日没有。 1 (0.5ms)SAVEPOINT active_record_1 (0.5ms)ROLLBACK TO SAVEPOINT active_record_1 致命的:exception重新进入 来自/Users/rskelley/.rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.5/lib/active_record/transactions.rb:286:in,scue in rollback_active_record_state!’ 涉及的文件如下。 Seeds.rb puts “Seeding Workdays.” day_numbers = (1..5).to_a 5.times do start_time = WorkDay.time_slot_format(9) end_time = WorkDay.time_slot_format([5,6][rand(2)]) rand_date = Date.today + day_numbers.slice!(0) WorkDay.create(start_time: start_time, end_time: end_time, date: rand_date ) end puts “Generating Time Slots for each WorkDay” workdays = WorkDay.all […]

在Rails和ActiveRecord中查询时忽略某些字段

我知道我可以指定某些字段来使用pluck查询数据库。 ids = Item.where(‘due_at < ?', 2.days.from_now).pluck(:id) 但是我想知道,是否有一种方法可以指定某些字段,我希望避免从数据库中查询。 某种反拔? posts = Post.where(published: true).do_not_lookup(:enormous_field)