Tag: activerecord

ActiveRecord包含

我使用以下模型制作了锻炼应用程序: 用户 常规 升降机 演习 相关信息 例程属于用户 例行程序有许多升降机(这是运动和常规之间的联接) 电梯属于运动 信息(套)属于电梯 我正在深入研究ActiveRecord查询,并特别包括处理我遇到的n + 1问题。 当我展示整个例程时,显示: 例程名称 用户名 每个电梯的练习名称 每个电梯的设置 如果我想减少查询,我可以简单地加载如下所示的所有内容: a = Routine.includes(:user,:lift,:exercise,:infos)并循环遍历所有这些以找到我想要的东西? 或者我必须打破它更多说: a = Routine.includes(:user,:lift) b = Lift.includes(:exercise,:infos) 为了缩小我的查询量。 如果这个问题不够明确,请告诉我。

清洁方式按指定的顺序通过id查找ActiveRecord对象

我想在给定一组id的情况下获得一个ActiveRecord对象数组。 我认为 Object.find([5,2,3]) 将返回一个数组,其中包含对象5,对象2,然后按顺序返回对象3,但我得到的数组按对象2,对象3和对象5排序。 ActiveRecord Base 查找方法API提到您不应该按照提供的顺序期望它(其他文档不提供此警告)。 一个可能的解决方案是按相同顺序的ID数组查找的? ,但订单选项似乎对SQLite无效。 我可以编写一些ruby代码来自己对对象进行排序(有点简单,缩放比例较差或缩放比较复杂),但有更好的方法吗?

rails 4模型关联左连接validationid

我一直在争论这个,我想创建一个LEFT加入条件,所以我有一个优惠券模型,用户可以创建优惠券,但他们可能会或可能不会被分配到一个工作,当他们被分配时他们被认为执行。 我有这个设置为has_one :job优惠券模型上的add_reference :jobs, :coupon, index: true与add_reference :jobs, :coupon, index: true索引,但这似乎是borked。 我认为今天我的大脑已被炸了……如果使用优惠券,我最好确认它被分配到有效的工作,这就是我使用索引的原因。 class CreateCoupons < ActiveRecord::Migration def change create_table :coupons do |t| t.string :code, limit: 250, null: false t.datetime :start_at, null: false t.datetime :end_at, null: false t.datetime :executed_at t.datetime :deleted_at t.timestamps null: false end add_reference :jobs, :coupon, index: true add_index :coupons, :deleted_at add_index :coupons, :code, […]

用json跟踪日期

我正在实现一个Facebook应用程序并使用AJAX / JSON 。 但是,返回的JSON结构的格式为2010-05-30T06:14:00Z 。 我在控制器动作中调用Game.all.to_json 。 如何将它们转换为正常的日期格式? 使用fbjs从服务器端或客户端更容易吗? fbjs有很多bug。 所以我更喜欢使用Server side的解决方案( Active Records )。 就像在发送JSON结构之前转换数据一样。

重命名ActiveRecord / Rails的created_at,updated_at列

我想重命名timestamp.rb中定义的timestamp列。 timestamp.rb的方法可以被覆盖吗? 并且在应用程序中必须要使用具有覆盖方法的模块。

Rails数据库默认值和布尔字段的模型validation

在Rails模型中,我有一个属性is_subscriber ,当我构建一个db迁移以将此列添加到数据库时,我将默认值指定为false: t.boolean “is_subscriber”, :default => false 我还在模型中指定需要存在此属性: validates :is_subscriber, presence: true 那么为什么在创建模型实例时却没有指定此属性会出现此错误? 2012-05-08T21:05:54+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Is subscriber can’t be blank):

为什么这个Ruby on Rails代码不能像我想要的那样工作?

所以我试图在这个问题中构建我所问的内容: 修复投票机制 但是,此解决方案不起作用。 用户仍然可以多次投票他或她想要。 我怎么能修复这个和/或重构? def create @video = Video.find(params[:video_id]) @vote = @video.video_votes.new @vote.user = current_user if params[:type] == “up” @vote.value = 1 else @vote.value = -1 end if @previous_vote.nil? if @vote.save respond_to do |format| format.html { redirect_to @video } format.js end else respond_to do |format| format.html { redirect_to @video } format.js {render ‘fail_create.js.erb’} end […]

没有具有belongs_to class_name关系的此类列

SQLite3::SQLException: no such column: organizations.user_id: SELECT “organizations”.* FROM “organizations” WHERE “organizations”.”user_id” = 2 我已经设置了这样的模型: 用户: User has_many :organizations 组织: attr_accessible :name, :founder, :founder_id belongs_to :founder, :class_name => ‘User’ 架构: create_table “organizations”, :force => true do |t| t.string “name” t.integer “founder_id” 当我在rails-admin中编辑用户时,我收到以下消息: `SQLite3::SQLException: no such column: organizations.user_id: SELECT “organizations”.* FROM “organizations” WHERE “organizations”.”user_id” = 2` 我想在组织上访问创始人,其中创始人是用户。 […]

选择要在模型上具有唯一ID的值

我有两种型号特卖和餐厅 我想显示每家餐厅的优惠。 我不希望它们链接:restaurant_id ,而是我想要它们链接:restaurant_name 。 我无法弄清楚如何链接它们:restaurant_name控制器中的:restaurant_name restaurant controller def show @restaurant = Restaurant.find(params[:id]) @deals = @restaurant.deals end show.html.erb 有任何想法吗?

ActiveRecord属性消失的情况

按照https://stackoverflow.com/a/24496452/102675中的说明,我结束了以下内容: namespace :db do desc ‘Drop, create, migrate, seed and populate sample data’ task seed_sample_data: [:drop, :create, :migrate, :seed, :populate_sample_data] do puts ‘Sample Data Populated. Ready to go!’ end desc ‘Populate the database with sample data’ task populate_sample_data: :environment do puts Inspector.column_names.include?(‘how_to_fix’) # create my sample data end end 正如您所料,如果我运行bundle exec rake db:populate_sample_data ,我就会成功 但是如果我运行bundle […]