Tag: activerecord

ActiveRecord使用JSON而不是YAML序列化

我有一个使用序列化列的模型: class Form < ActiveRecord::Base serialize :options, Hash end 有没有办法让这个序列化使用JSON而不是YAML?

如何在Ruby On Rails中使用NuoDB手动执行SQL命令

我试图手动执行SQL命令,所以我可以在NuoDB中访问过程。 我正在使用Ruby on Rails,并使用以下命令: ActiveRecord::Base.connection.execute("SQL query") “SQL查询”可以是任何SQL命令。 例如,我有一个名为“反馈”的表,当我执行命令: ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`") 这只会返回一个“真实”的回应,而不是发送给我所有的数据。 这是在Rails控制台上的输出是: SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks` => true 我想用这个在NuoDB中调用存储过程,但是在调用过程之后,这也会返回一个“真实”的响应。 有没有反正我可以执行SQL命令,并获得所需的数据,而不是得到一个“真实”的回应?

检查控制器在Rails中是否存在logging

在我的应用程序中,用户可以创build一个业务。 当他们触发我的BusinessesController的index操作时,我想检查一个业务是否与current_user.id : 如果是:显示业务。 如果否:redirect到new操作。 我试图使用这个: if Business.where(:user_id => current_user.id) == nil # no business found end 但即使在业务不存在的情况下,它总是返回真实的… 如何testing数据库中是否存在logging?

我如何强制ActiveRecord重新加载类?

我创build了一堆迁移,其中一些标准的“创build表”或“修改表”迁移,其中一些修改数据。 我正在使用我的实际ActiveRecord模型来修改数据,一个la: Blog.all.each do |blog| update_some_blog_attributes_to_match_new_schema end 问题是,如果我加载Blog类,然后修改表,然后再次使用Blog类,模型具有旧的表定义,并不能保存到新的表。 有没有办法重新加载类和它们的属性定义,所以我可以重用它们?

使用Active Record,Rails&Postgres查找具有多个重复字段的行

使用Postgres和Activerecord在多个列中查找具有重复值的logging的最佳方法是什么? 我在这里find这个解决scheme User.find(:all, :group => [:first, :email], :having => "count(*) > 1" ) 但是它似乎不适用于postgres。 我得到这个错误: PG :: GroupingError:错误:列“parts.id”必须出现在GROUP BY子句中或用于聚合函数

如何获取可以批量分配的activerecord模型的属性列表

我想有一个可以批量分配的所有属性名称的列表。 我需要这个自定义表单生成器,不会添加输​​入字段默认情况下,不能批量分配。 例如,如果我有一个模型,如: class Post < ActiveRecord::Base attr_protected :account belongs_to :author validates_presence_of :title, :author end 我想作为一个结果列表包含:作者,:标题。 任何想法,如果这种方法存在? 或者我可以如何制作一个这样的指南?

你如何在Rails 3中使用ActiveRecord关联?

我有一个Rails 3项目。 随着Rails 3来到Arel和重用一个范围来build立另一个范围的能力。 我想知道是否有一种方法来定义关系时使用范围(例如“has_many”)。 我有logging有许可列。 我想build立一个default_scope,考虑到我的权限列,以便logging(即使是通过关系访问的)被过滤。 目前,在Rails 3中,default_scope(包括我发现的补丁)没有提供传递proc(我需要用于后期variables绑定)的可行方法。 有没有可能定义一个has_many命名的作用域可以传递给哪个? 重用命名作用域的想法如下所示: Orders.scope :my_orders, lambda{where(:user_id => User.current_user.id)} has_many :orders, :scope => Orders.my_orders 或者在关系中隐式编码该命名范围将如下所示: has_many :orders, :scope => lambda{where(:user_id => User.current_user.id)} 我只是试图通过后期绑定来应用default_scope。 我宁愿使用Arel方法(如果有的话),但会使用任何可行的选项。 由于我指的是当前用户,我不能依赖于在最后时刻未被评估的条件,比如: has_many :orders, :conditions => ["user_id = ?", User.current_user.id]

在Rails的has_many关系中默认使用一个范围

假设我有以下类 class SolarSystem < ActiveRecord::Base has_many :planets end class Planet < ActiveRecord::Base scope :life_supporting, where('distance_from_sun > ?', 5).order('diameter ASC') end Planet有一个范围life_supporting和SolarSystem has_many :planets 。 我想定义我的has_many关系,这样当我为所有相关planets询问planets ,自动应用solar_system支持范围。 本质上,我想solar_system.planets == solar_system.planets.life_supporting 。 要求 我不想把scope :life_supporting在Planet上 default_scope where('distance_from_sun > ?', 5).order('diameter ASC') 我也想通过不必添加到SolarSystem来防止重复 has_many :planets, :conditions => ['distance_from_sun > ?', 5], :order => 'diameter ASC' 目标 我想有类似的东西 has_many […]

Rails:将模型构造成子文件夹而不创build子模块的优雅方法

我的应用程序/模型文件夹中有许多模型。 我想清理一下这个文件夹。 在子文件夹中移动属于彼此的模型。 问题是按照惯例,模型类被命名为相应的模块。 例如 应用程序/模型/博客/ post.rb 应用程序/模型/博客/ comment.rb 应用程序/模型/ user.rb 以便: 应用程序/模型/博客/ post.rb class Post < ActiveRecord end 并不是 class Blog::Post < ActiveRecord end

当没有logging时用()find()

在我目前的rails程序中,当我使用类似的东西 user = User.find(10) 当没有ID = 10的用户时,我将会有如下exception: ActiveRecord::RecordNotFound: Couldn't find User with ID=10 我可以得到零,而不是提出exception,所以当我做这样的事情: unless user = Challenge.find(10) puts "some error msg" end 我只想在没有logging的情况下得到零,我不想使用开始/救援 谢谢