Tag: rails activerecord

选择Active Record中的内部连接的所有列

在Ruby on Rails指南中,我看到了使用Joins的示例。 例如 Category.joins(:posts) 导致查询 SELECT categories.* FROM categories INNER JOIN posts ON posts.category_id = categories.id 这一切都很好,但是如何使用Active Record返回类别和post列? 或者我完全错过了SQL的东西?

Rails&Devise:两步确认参数错误

这是我的困境和戏剧的延续…… 跑过,匆匆处理: 我可以输入我的电子邮箱进行注册! 我可以点击确认链接! 我被带到正确的页面确认: HTTP://本地主机:3000 /用户/确认confirmation_token = jxOZQnyixE1PvnrptnYO 这是问题…一旦我提交表单,我就会收到此错误: ActiveRecord::RecordNotFound in ConfirmationsController#confirm_account {“utf8″=>”✓”, “_method”=>”put”, “authenticity_token”=>”qUk6EDoR6N+V0h5O/jLKNZtl0hiaN/g9Gd5YdI2QhIU=”, “user”=>{“confirmation_token”=>”jxOZQnyixE1PvnrptnYO”, “password”=>”[FILTERED]”, “password_confirmation”=>”[FILTERED]”}, “commit”=>”Confirm Account”} 问题在第10行: class ConfirmationsController “show” end end end 这是我的show.html.erb confirm_account_path) do |f| %> ‘devise/shared/links’ %> 我已经哭了一个星期…我真的希望这是我的一个愚蠢的错误(同时我没有)。 如果您需要,我很乐意为您提供更多信息。 为了我的方便,你能否完整地描述你的答案 – 我是铁杆新手!

如何将ActiveRecord模型属性从json迁移到jsonb?

迁移应该是什么样的? 我想利用jsonb数组查询技术。

Ruby on Rails ActiveRecord唯一性validation

我是Rails的新手,正在阅读有关该主题的一些资源。 我得到了一些问题。 好吧,假设我们有一个模型,它validation了一些属性的唯一性: class User < ActiveRecord::Base attr_accesible :name validates :name, uniqueness: true end 因此,我现在合理地期望,我将无法在数据库中创建(或更准确地说 – 保存)两个具有相同名称的用户实例。 但是,这个资源确实坚持,它仍然是可能的! 一些用户登录。 点击“登录”按钮不止一次 请求1在内存中创建用户(有效) 请求2在内存中创建用户(有效) 请求1已成功保存 请求2已成功保存 稍后在此源上建议将数据库中的索引添加到“名称”列并使其唯一。 但是,如果我之前说过 – validation是在保存过程中进行的,那么如何保存第二个请求呢? 或者我丢失了什么? (我提到的资源是Rails Tutorial

Ruby on Rails – 什么是模型的make方法?

在我的lib / tasks / data.rake中,我有User.make(属性)。 make方法似乎创建了一个新记录,但我找不到任何关于此的文档。 make方法不是由我的用户模型定义的,因为我的用户模型inheritance了ActiveRecord :: Base。

ActiveRecord :: Base.connection.exe的受影响的行与Postgres

有没有办法使用ActiveRecord::Base.connection.execute SQL操作产生的受影响行数? 我找到了MySQL适配器的答案 ,但它不适用于Postgres。 或者,如果有办法获得SQL文本响应(例如“UPDATE 126”),那也可以。

模型belongs_to eiher /或多个模型

是否有可能拥有一个属于(或/或)多个模型的模型? 例如,在我的项目中,我有一个可能属于某个人或组的订阅模型。 当某人加入某个特定群组时,她会自动“inheritance”该群组的订阅。 我已经建立了以下协会 在person.rb: has_many :subscriptions 在group.rb中: has_many :subscriptions 在subscription.rb中: belongs_to :person belongs_to :group 另外,我在订阅表中添加了person_id和group_id的字段。 问题是,当我尝试创建订阅时,让我们说一个人我得到一个错误,“组必须存在”。 有办法克服这个问题吗? 如果不是绝对必要的话,我宁愿避免使用多态关联。

渲染无法在rescue_from ActiveRecord :: Rollback方法中呈现正确的模板

我正在为电子商务网站构建结帐页面,我有一个相当长的事务,它创建了一个新的用户模型和一个新的订单模型。 我将这些模型的创建包装在一个事务中,这样如果一个模型的validation失败,另一个不会在数据库中闲逛。 这是我的OrdersController中的修剪代码: rescue_from ActiveRecord::Rollback, with: :render_new def render_new render action: ‘new’ end ActiveRecord::Base.transaction do @user = User.new params[:user] unless @user.save raise ActiveRecord::Rollback end //More stuff … @order = Order.new params[:order] … unless @order.save raise ActiveRecord::Rollback end end 我看到的错误是这样的: 缺少模板订单/创建,应用/创建{:locale => [:en],:formats => [:html],:handlers => [:erb,:builder,:coffee]} 我很困惑为什么它试图渲染模板命令/创建和应用程序/创建而不是渲染订单/新。 有没有更好的方法来强制事务失败,以便发生回滚?

需要将Postgres(== String)中的布尔值转换为Ruby布尔值

我正在使用Postgres和Rails。 有一个带有subselect的查询返回一个布尔值,但Postgres总是返回一个像’t’或’f’的字符串。 但是在生成的JSON中我需要一个真正的布尔值。 这是我的查询: SELECT *, EXISTS ( SELECT TRUE FROM measurement JOIN experiment ON measurement.experiment_id = experiment.id JOIN location ON experiment.location_id = location.id WHERE location.map_id = map.id LIMIT 1 ) AS measurements_exist FROM “map” 无论我是使用THEN true还是THEN 1或THEN ‘true’都没关系,我总会得到一个字符串。 所以我的JSON响应总是这样: [ {“id”:8, …, “measurements_exist”:”f”}, {“id”:9, …, “measurements_exist”:”t”} ] 但它应该(!)看起来像那样: [ {“id”:8, …, “measurements_exist”:false}, {“id”:9, …, […]

在Hash中保存错误排序后的activerecord-postgres-hstore

使用Hstore存储为哈希表,在保存后在哈希中输入错误 class Service 1, “zz” => 2, “cc” => 3, “d” => 4 } #=> { “aaa” => 1, “zz” => 2, “cc” => 3, “d” => 4 } service.save reload! service = Service.find(:id) service.properties #=> { “d” => “4”, “cc” => “3”, “zz” => 2, “aaa” => 1 } Bug::: wrong ordering after save […]