Tag: mysql

我可以在Rails 2.3中进行primefaces增量而不降低到SQL吗?

我们的应用程序中有一些经常命中的代码会增加一列,如下所示: if (r = customer.find_or_generate_reminder) r.counter += 1 r.save! end 我们正在获得锁定等待超时,因此我正在考虑将其作为primefaces操作。 天真,我想做的事情看起来像这样: if (r = customer.find_or_generate_reminder) connection.excute(‘UPDATE customer_reminders SET counter=counter+1, updated_at=now() WHERE id = ‘ + r.id) end 是否有一种ruby世界的方式做同样的事情?

通过Rails调用存储过程?

如何通过rails代码访问在Mysql中创建的存储过程? 我目前正在使用以下版本的rails应用程序: – Rails 2.1.0 Ruby Enterprise Edition 2010.01 谢谢….

将select和collect方法转换为连接

我正在学习加入我有三个模型 class Booking < ActiveRecord::Base has_and_belongs_to_many :groups has_and_belongs_to_many :users end class User < ActiveRecord::Base belongs_to :group has_and_belongs_to_many :bookings end class Group < ActiveRecord::Base has_many :users has_and_belongs_to_many :bookings end booking = Booking.first booking.groups.collect{|g| g.users.select{|u| !self.users.include? u}}.flatten 我希望得到所有未在预订组中预订的用户 booking=Booking.first booking.groups.collect{|g| g.users.select{|u| !self.users.include? u}}.flatten 如何使用连接而不是收集和选择?

使用ActiveRecord在Rails中实现复杂的关系

我的另一个问题 : 我需要做的是:用自己的指定信息字段创建多个类别(即,汽车与Pets有不同的字段),一旦创建了这样的类别,我将调用我需要的命令,每个类别的新表将会做成。 我知道我可以将所有字段存储为某种字符串,然后处理它以正确显示它,但我需要为我的Web应用程序提供高级搜索function,并为每个类别创建单独的表似乎是实现它的最佳方式。 我真的很想听听这个的替代方案 所以我有这种情况,我需要类别来保存该特定类别所需的所有输入字段。 所以在管理中,我有这样的表格,我可以将类别名称,一些其他相关信息添加到类别本身,然后这些字段将收集有关在制作时向用户呈现的HTML字段的信息。进入这个特定类别。 例如,这将是一个狗类: 分类名称:狗 启用类别:1 分类父母:宠物 领域: 标题 – 文本字段(将自动添加到每个类别) 品种 – 选择领域 年龄 – 数字字段 颜色 – 文本字段 价格 – 数字字段(将自动添加到每个类别) 描述 – 文本区域字段(将自动添加到每个类别) 所以现在在这个阶段,当用户为Dog类别创建所有这些特定字段时,我无法确定当用户点击提交按钮以保存此类别时会发生什么。 我想到了这两个解决方案: 为每个新类别创建一个新模型/表(上面的读取链接问题),将所有HTML字段作为列,并在categories表上存储一行,其中包含有关此类别的一些基本信息 将所有内容存储在categories表中,并有一个fields_json列,它将存储所有HTML字段信息(我实际上不会存储HTML,但基本信息是字段的内容,然后在控制器中动态创建HTML表单字段)作为JSON字符串。 我可以在create很好地呈现这些字段,但是在update时填充这些字段(可能)会很麻烦,搜索function对于这种替代方案来说效率不高。 所以我正在寻找的是第三种选择,所以我可以解决我的问题。 什么是解决此问题的有效方法,并能够使用不同的输入字段的类别,并能够有效地执行这些类别的搜索? 我正在开发的项目是在Ruby on Rails 4中创建的,数据库是在MySQL中创建的。

Rails 2.3.3 – 设置为生产模式

如何将应用程序设置为生产模式? 好吧,这一定是不费脑子的,但我即将部署我的第一个Rails应用程序,我已经正确设置了一切:Ubuntu Hardy,Passenger,MySQL。 但是,它仍然在开发模式下运行。 我只能找到旧版Rails的文档,并希望确保我做得对。 提前致谢。

稳定/可重复的随机排序(MySQL,Rails)

我想通过随机排序的ActiveRecord模型列表(来自MySQL数据库的行)进行分页。 但是,这种随机化需要在每个会话的基础上持续存在,以便访问该网站的其他人也可以获得随机的,可分页的记录列表。 假设有足够的实体(数万个)将随机排序的ID值存储在会话或cookie中太大,所以我必须暂时以其他方式(MySQL,文件等)保留它。 最初我以为我可以根据会话ID和页面ID创建一个函数(返回该页面的对象ID),但是由于MySQL中的对象ID值不是连续的(有间隙),因此我似乎崩溃了正在戳它。 好处是它不需要/最小存储,但缺点是它实现起来可能非常复杂并且可能是CPU密集型的。 我的感觉是我应该创建一个交集表,例如: random_sorts( sort_id, created_at, user_id NULL if guest) random_sort_items( sort_id, item_id, position ) 然后只需将’sort_id’存储在会话中。 然后,我可以像往常一样对random_sorts WHERE sort_id = n ORDER BY position LIMIT …进行分页。 当然,我必须在那里放一些收割机,以便在一段时间不活动后将它们移除(基于random_sorts.created_at)。 不幸的是,我必须在创建新对象时(和/或删除旧对象,尽管删除非常罕见)使排序无效。 并且,随着负载的增加,该表的大小/性能(甚至正确索引)下降。 看起来这应该是一个解决的问题,但我找不到任何这样做的轨道插件…任何想法? 谢谢!!

Rails 3 ActiveRecord:UNION

有没有办法在Rails 3中使用MySQL UNION?

如何根据布尔值计算两次相同的字段?

我想通过自定义选择和连接来修复我的N + 1计数问题。 我的post和标签之间有多对多的关系。标签可以被确认或未经确认。 我想在我的postselect语句中包含字段tags_confirmed_count和tags_unconfirmed_count(所以我可以避免以后为每个问题计算标签)。 我已经为以下查询的post执行了计数标记: Post.joins(:tags).select(“posts.*, COUNT(tags.id) AS tags_count”).group(“posts.id”) 现在,对于将字段确认设置为true而一次为false的标记,我找不到计数标记的解决方案。 我试过这种方式,但是我这样我只计算确认的那些,但不是未经证实的那些: Post.joins(:tags).select(“posts.*, COUNT(tags.id) AS tags_confirmed_count”).group(“posts.id”).where(“tags.confirmed = true”)

在选择标记中显示当前用户的数据及其名称

我想根据通过导航栏传递的参数值显示当前用户的(经理)数据,并在select标签中显示其名称,User有两个角色(’user’,’manager’)或枚举角色(0,1)。 这是我在导航栏中给出的链接 – %li= link_to ‘Timesheet’, is_manager? ? timesheet_path(user_id: current_user.id) : timesheet_path, class: navlink_class(‘timesheets’) 但是在控制器中它变得复杂,因为我使用的查询是这些 – @begin_date = params[:begin_date].present? ? Date.parse(params[:begin_date]) : Date.today.beginning_of_month @end_date = params[:end_date].present? ? Date.parse(params[:end_date]) : Date.today.end_of_month begin_datetime = @begin_date.beginning_of_day end_datetime = @end_date.end_of_day @user_tasks = Task.joins(:task_time_trackers).where(“(task_time_trackers.created_at BETWEEN ? AND ?)”,begin_datetime, end_datetime ).distinct.order(“id ASC”) user_trackers = TaskTimeTracker.joins(:task).where(“(task_time_trackers.created_at BETWEEN ? AND ?)”,begin_datetime, end_datetime ) […]

MySQL:删除连续的重复值

我有一个MySQL表,返回包含连续重复项的值列表(按时间戳排序)。 例如,在查询时,我只需要返回连续重复的值: [1, “Yellow”] [2, “Yellow”] [3, “Green”] [5, “Black”] [6, “Green”] [7, “Green”] 这里的数字用于参考 – 该值实际上是字符串“Green”,因此对于上述情况,新的未列出的列表将是: [1, “Yellow”] [3, “Green”] [5, “Black”] [6, “Green”] 有没有一种聪明的方法来处理MySQL的这个问题? 使用Rails / ActiveRecord,而不是那应该有所作为,但我可以通过操作数组来做到这一点,只是想知道是否有更聪明的方法来处理它。