Tag: activerecord

向ON子句添加参数的任何可能方法都包括在rails上的左连接?

我有一个如此巨大的复杂查询: @objects = Object.joins({ x: :y }).includes( [:s, { x: { y: :z } }, { l: :m },:q, :w, { important_thing: [:h, :v, :c,:l, :b, { :k [:u, :a] }] } ]).where(conditions).order(“x.foo, x.bar”) 然后我想显示所有Objects和仅在两个日期之间创建的Important_things事件。 如果我把它放在那里我没有获得所有Objects子句,只有在知情日期之间具有Important_things Objects 。 使用原始sql的解决方案是这样的: select * from objects left join important_things on important_things.object_id = objets.id and important_things.created_at between ‘x’ and […]

Rails form_for NoMethodError

我试图在rails应用程序中使用erb生成表单。 我不断得到我的.html.erb文件第3行的NoMethodError。 下面是迁移,控制器,模型和.html.erb 错误是“未定义的方法`class_projects_path’” 移民: class CreateClassProjects < ActiveRecord::Migration def change create_table :class_projects do |t| t.string :name t.text :description t.text :summary t.text :github t.text :other_url t.timestamps end end end 模型: class ClassProject < ActiveRecord::Base attr_accessible :description, :github, :name, :other_url, :summary end 控制器: class ClassProjectsController < ApplicationController def new @class_project = ClassProject.new end end new.html.erb: New […]

has_and_belongs_to_many关系没有关联两种方式

我使用has_and_belongs_to_many建立关系来关联用户和事件。 然后我试试这个: user = User.find(1) event = Event.find(1 ) 这两个目前都没有关联…然后我尝试通过这样做来关联它们: user.events << event 此操作有效…但是,它们彼此之间没有正确关联: user.events为此用户正确列出事件…但event.users没有与之关联的用户。 我如何做到这一点,以便当我将一个与另一个相关联(事件与用户或用户与事件)…它自动关联另一种方式?

有没有办法将params传递给rails中的postgres原始查询?

我有一个复杂的原始查询,我想传递params而不是插值 例如: query = “SELECT id, abbr as code, name FROM states WHERE name IN (‘#{params[:state].join(“‘,'”)}’)” ActiveRecord::Base.connection.execute(query) 有没有办法像ActiveRecord一样传递params State.where(name: [‘Alabama’, ‘Alaska’])

Rails分页现有的ActiveRecord结果数组

我通常在我的应用程序中使用will_paginate进行分页,但是在我的搜索function上遇到了一个绊脚石。 我使用Thinking Sphinx进行全文搜索,返回分页结果。 我遇到的问题是,在我收到Thinking Sphinx的结果后,我需要将它们与其他一些结果合并并重新排序。 一旦我完成处理它们,我得到的结果数组与TS的原始结果非常不同。 因为这个数组可能有1000多个结果分页是必要的。 问题是我无法弄清楚如何让will_paginate与现有数组一起使用。 我已经做了一些研究,似乎这个问题的唯一解决方案来自几年前,并且基于旧的内置Paginator类。 最近我发现使用will_paginate的是来自2007年中期的devchix: http : //www.devchix.com/2007/07/23/will_paginate-array/comment-page-1/ – 我是考虑到这一点,但它似乎没有为我做任何事情。 是否有现有的方法为现有的AR结果数组应用分页(最好是通过will_paginate)?

Ruby on Rails ActiveRecord“has_many:through”唯一性validation

目前我每次检查都会插入一个新的关系,如果它不存在: unless Relationship.exists?(:entry_id => entry.id, :tag_id => tag.id) 我如何在关系模型中实现这样的validation,以便它不允许在同一条目和标记之间有多个关系?

重用named_scope来定义另一个named_scope

我看到问题的本质 有一天,如果我没弄错的话,我已经看到了重用named_scope来定义另一个named_scope的例子。 像这样的东西(不记得确切的语法,但这正是我的问题): named_scope :billable, :conditions => … named_scope :billable_by_tom, :conditions => { :billable => true, :user => User.find_by_name(‘Tom’) } 问题是:如果可能的话,确切的语法是什么? 我找不到它,谷歌也没有帮助。 一些解释 为什么我真的想要它,是因为我使用Searchlogic来定义一个复杂的搜索,这可能会产生如下表达式: Card.user_group_managers_salary_greater_than(100) 但到处都是太久了。 因为据我所知,Searchlogic只是动态定义了named_scopes,我想在Card类上设置一个named_scope,如下所示: named_scope from_big_guys, { user_group_managers_salary_greater_than(100) } – 这是我在named_scope中使用那个漫长的Searchlogic方法的地方。 但是,再一次,语法是什么? 想不出来。 恢复 那么,named_scope嵌套(我不是指链接)实际上可能吗?

为什么Rails / ActiveRecord在ORDER中给出Postgres SyntaxError“非整数常量”?

我有一些Ruby on Rails / ActiveRecord代码,它给我以下Postgres错误: PG :: SyntaxError:ERROR:ORDER中的非整数常量 我不确定为什么因为它是由created_at命令的简单提取 self.posts.order(created_at: :desc).limit(25) 我该怎么做才能改变这个?

ActiveRecord在表中具有来自同一列的2个FK

嗨,我想允许我的用户互相发送消息,我想有一个像表格结构 用户:ID | 名称 消息:至| 来自| 身体 我对rails很新,我不确定我的模型应该是什么样子,或者如何构建我从同一列有两个FK的关系。 To&From是发送消息的用户和接收者。 我正在为我的模型使用ActiveRecord。 谁能让我指出正确的方向? 我有一种感觉,我应该使用have_many,但我希望关系正好2。

Rails模型中的inheritance模型

我正在为我的应用做一个报告系统。 我创建了一个模型ReportKind,但是因为我可以报告很多东西,所以我想制作不同类型的报告类型。 由于它们共享很多行为,我正在尝试使用inheritance。 所以我有主要模型: model ReportKind << ActiveRecord::Base end 并创建了例如: model UserReportKind << ReportKind end 在我的表report_kinds中我是类型列,直到这里它全部工作。 我的问题在于表单/控制器。 当我执行ReportKind.new ,我的表单使用’* report_kind *’前缀构建。 如果获取UserReportKind ,即使通过ReportKind.find ,表单也会构建’user_report_kind’前缀。 这会使控制器中的所有内容变得混乱,因为有时候我会有params [:report_kind],有时候是params [:user_report_kind],等等我所做的每一个其他inheritance。 无论如何强迫它使用’report_kind’前缀? 此外,我不得不强制控制器中的属性“类型”,因为它没有从表单直接获取值,是否有一个很好的方法来做到这一点? 路由是另一个问题,因为它试图基于inheritance的模型名称构建路由。 我通过在指向同一控制器的路由中添加其他模型来克服这个问题。