Tag: sql

将SQL语法转换为ActiveRecord查询的工具

有许多问题可以帮助将特定的SQL查询转换为ActiveRecord查询。 是否有一些帮助/指导[在线]工具自动进行转换?

用黄瓜测试时,sql错误无法启动事务内的事务

我是黄瓜的新手,我正在学习BDD 当我尝试填写表单并创建记录时,会显示此sqlite错误,但是当我在浏览器中手动尝试代码时没有错误。 我正在使用rails 4。 这是我的控制器代码 class Admin::ItemsController < ApplicationController def index @items=Item.all end def new @item=Item.new end def create @item=Item.new items_params respond_to do |format| if @item.save format.html { redirect_to admin_items_path } else format.html { redirect_to new_admin_items_path } end end end private def items_params params.require(:item).permit(:name,:price) end end 这是我的function文件 Feature: Manage Items In order to make a […]

Rails 4生成无效的列名称

我有一个相当简单的查询来返回多对多关系中的第一个记录,或者如果它不存在则创建一个。 UserCategorization.where(category_id: 3, user_id: 5).first_or_create 我的模型看起来像: class UserCategorization < ActiveRecord::Base belongs_to :user belongs_to :category self.primary_key = [:user_id, :category_id] end 但是它在SQL中生成无效的列名: SQLite3::SQLException: no such column: user_categorizations.[:user_id, :category_id]: SELECT “user_categorizations”.* FROM “user_categorizations” WHERE “user_categorizations”.”category_id” = 3 AND “user_categorizations”.”user_id” = 5 ORDER BY “user_categorizations”.”[:user_id, :category_id]” ASC LIMIT 1 如果我从模型中删除self.primary_key = [:user_id, :category_id] ,它可以正确检索记录但无法保存,因为它不知道在WHERE子句中使用什么: SQLite3::SQLException: no such column: user_categorizations.: […]

食谱模型中的成分总和创建购物清单

我有一个购物清单模型,有许多食谱,这也有很多成分。 class Shoppinglist :shoppinglistrecipezations end class Recipe :shoppinglistrecipezations has_many :ingredients, :through => :ingredienzations has_many :ingredienzations end class Ingredient :ingredienzations has_many :ingredienzations end 当我在购物模型中添加几个食谱(其中一些具有相同的成分)时,我想打印购物清单中所有配料的清单和适量的配料。 Shoppinglistingredienzations有一个整数“人”来告诉应该计算多少人服务,而食谱有一个人变量来显示食谱的人数。 Ingredienzations包含数量,测量类型(克,茶匙等)和recipe_id。

通过共同的关联数排序,即使没有(轨道)

我正在研究一个与此问题有着非常相似的窘境的项目: 按共同关联数量排序(Rails) 问的提问者(霓虹灯)写道, 背景:我有post和用户,都有很多社区。 目标:对于任何给定的用户,我想返回一组post,按照post与用户共有的社区数量排序(更多社区的post更高) 不幸的是,该解决方案仅包括至少有一个共同社区的post。 我的quandry需要包括按共同社区数量排序的所有post。 扩展目标:结果必须是AREL对象, 所有post按公共社区的数量排序,包括与用户共同拥有零社区的post(共同拥有更多社区的post更高)。

使用activerecord发出请求,仅从组中获取用户,而不从其他用户获取

我正在尝试从少数组中获取用户(使用给定的ID)并从其他组中排除用户。 我尝试过类似的东西: User.joins(:groups).where(groups: {id: [“8939″,”8950”]}).where.not(groups: {id: 8942}).map(&:id) User Load (0.9ms) SELECT “users”.* FROM “users” INNER JOIN “groups_users” ON “groups_users”.”user_id” = “users”.”id” INNER JOIN “groups” ON “groups”.”id” = “groups_users”.”group_id” WHERE “groups”.”id” IN (8939, 8950) AND “groups”.”id” != $1 [[“id”, 8942]] => [119491, 119489, 119490, 119492, 119488, 119484, 119483, 119491, 119482] 但这不正确 8942组中的用户。 Group.find(8942).users.pluck(:id) Group Load (0.4ms) […]

使用ActiveRecord查询进行百分比计算的难度

我有一个ActiveRecord模式,PurchaseSummary,我inheritance了,我不能改变,看起来像这样: purchase_summaries date date_of_purchase integer number_of_purchases boolean coupon_used 例如,11月1日,有800次购买,500次没有优惠券,300次有优惠券,11月2日,600次购买没有优惠券,100次购买,因此数据库中的行如下所示: 2011-11-01, 500, false 2011-11-01, 300, true 2011-11-02, 600, false 2011-11-02, 100, true 例如,11/1的总购买量为800和11/2 700。 问题:我想构建一个每天返回的查询,使用优惠券的购买百分比,或 2011-11-01, 0.375 2011-11-02, 0.142

在父母的孩子上搜索时,ActiveRecord不会返回

很想知道我正在做这个简单的错误… current_user = User.find(60) Plan.joins(:user).where(“users.id” => current_user.id).where(“plans.status” => nil) # Plan Load (8.6ms) SELECT “plans”.* FROM “plans” INNER JOIN “users” ON “users”.”id” = “plans”.”user_id” WHERE “users”.”id” = 60 AND “plans”.”status” IS NULL # => #<ActiveRecord::Relation [# # 不明白为什么第二个陈述没有找到计划..

按两个字段排序,一个是created_at,在Rails中

这是Rails 3中自定义,高效,复杂排序的后续问题 我想开发一种有效的轨道模型订购方法。 假设我在名为“popular”的字段中保存所有对象的评级。 如果我想按此评级排序,我会这样做: Model.order(‘popularity ASC’) 如何通过创建的偏斜来命令? 是否有办法将创建时间戳转换为整数值,然后按流行度排序 – created_at,以便旧对象的评级随着时间的推移而降低? IE之类的东西: Model.order(‘popularity-integerize(created_at) ASC’) 那么:我怎么能这样做,它是否有效?

在PostgreSql中有关联的子句

这是我的关联 Instructor has many Instructor Students InstructorStudent has many Student Contacts Student Contacts表有一个字段primary_contact,它有布尔类型。 我希望没有任何学生联系人或所有学生联系人的primary_contact的教师学生都是假的。 例如 教师学生1有3个学生联系人,所有3个学生联系人的主要联系人字段都是假的。 比我想要的记录 教师学生2有3个学生联系人,其中2个学生联系人的主要联系人字段是假的,而其他学生联系人的主要联系人是真实的,而不是我不想要该记录。 我做了一个查询,但我不怎么写有条款。 Instructor.joins(:instructor_students => :student_contacts) .where(“admin_users.id = ? AND student_contacts.primary_contact = ?”,7,false) .select(“student_contacts.instructor_student_id,count(student_contacts.primary_contact) as sc_count”) .group(“student_contacts.instructor_student_id”) .having(“count(student_contacts.primary_contact) = ?”,Dynamic_value) 任何帮助将不胜感激。 先感谢您。