Tag: activerecord

使用带有命名范围的ActiveRecord连接多个表

我喜欢为rails制作命名范围。 然而,我遇到了一些泡菜。 我非常习惯使用命名范围进行连接,如下所示: named_scope :foo, :joins => :bar, :conditions => “bar_attribute = ‘something'” 现在假装我有一个名为baz的表,它包含bar表中的外键。 我需要这样的东西: named_scope :foo, :joins => (:bar => :baz), :conditions => “bar.id = baz.bar_id AND baz_attribute = ‘something_else'” 这怎么可能? 谢谢

Mysql ::错误:重复条目

我有一个模特 class Gift :account_id end add_index(:gifts, [:account_id, :giver_id], :uniq => true) 行动 def create @gift= Gift.new(params[:gift]) if @gift.save … else … end end 在“生产”模式中,我有时会收到错误 ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry ‘122394471958-50301499’ for key ‘index_gifts_on_account_id_and_user_id’ 有什么问题?

为什么Rails Active Record迁移会在mysql的varchar列上生成COLLATE utf8_bin

我在导轨上运行jruby for rails 3.0.10。 我发现在某个varchar列上以某种方式激活记录迁移会生成COLLATE utf8_bin。 当我做一个show create table用户时: CREATE TABLE `users` ( `id` int(11) not null AUTO_INCREMENT default NULL, `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin not null default ”, `remember_created_at` datetime, `sign_in_count` int(11) default 0, `current_sign_in_at` datetime, `last_sign_in_at` datetime, `current_sign_in_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin default NULL, …. 任何人都知道为什么以及如何关闭它?

多对多关系只能以Rails / Activerecord / devise的方式工作

我有一个多对多的关系用户到列表用户模型是用设计创建的。 出于某种原因,我无法访问任何用户的.lists。 为nil返回undefined方法`to_sym’:NilClass。 在做了一些挖掘之后我很确定我已经在_reflect_on_associationactiverecord(4.1.6)lib / active_record / reflection.rb中找到了问题 def _reflect_on_association(association) #:nodoc: _reflections[association.to_sym] end 协会正在以零传递。 有没有人遇到过这个问题? 在rails控制台中测试关系 [15] pry(main)> testuser = User.new => # [16] pry(main)> testlist = List.new => # [17] pry(main)> testlist.users => [] [18] pry(main)> testuser.lists NoMethodError: undefined method `to_sym’ for nil:NilClass from /Users/user/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.6/lib/active_record/reflection.rb:100:in `_reflect_on_association’ [19] pry(main)> testlist.users < [#] [22] pry(main)> testuser.lists […]

如何覆盖Rails的默认迁移生成器模板

我需要覆盖这些迁移模板: https://github.com/rails/rails/blob/e20dd73df42d63b206d221e2258cc6dc7b1e6068/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb和https://github.com/rails/rails/blob/e20dd73df42d63b206d221e2258cc6dc7b1e6068/ ActiveRecord的/ lib目录/导轨/发电机/ active_record /迁移/模板/ create_table_migration.rb 在我的rails应用程序中,以便他们从rails应用程序而不是gem本身中获取模板。 到目前为止,我已尝试过所有可能的组合,但没有运气。 我尝试过的: – Rails.root/lib/templates/rails/migration/migration.rb – Rails.root/lib/templates/rails/migration_generator/migration.rb – Rails.root/lib/rails/templates/rails/migration/migration.rb – Rails.root/lib/rails/templates/rails/migration_generator/migration.rb – Rails.root/lib/rails/generators/templates/rails/migration/migration.rb – Rails.root/lib/rails/generators/templates/rails/migration_generator/migration.rb – Rails.root/lib/rails/templates/generators/rails/migration/migration.rb – Rails.root/lib/rails/templates/generators/rails/migration_generator/migration.rb – Rails.root/lib/rails/generators/active_record/migration/templates/migration.rb – Rails.root/lib/rails/generators/active_record/migration_generator/templates/migration.rb – Rails.root/lib/rails/generators/active_record/templates/migration.rb – Rails.root/lib/rails/generators/active_record/templates/migration.rb 有人能指出我正确的方向吗?

订购ActiveRecord关系对象

我有一个名为contact的ActiveRecord对象。 它有一个称为profiles的关系。 这些配置文件具有url属性。 应按字母顺序按URL排序配置文件。 我尝试过sort_by以及order但是我收到了这个错误: contact.profiles.sort_by! { |profile| profile.url } undefined method `sort_by!’ for # 最好的方法是什么? 我正在使用Rails v4.1.0。

RTI中的STI Inheiritance。 查找问题

由于我的inheritance结构,我在搜索STI表中的记录时遇到问题 class User < ActiveRecord::Base class LegacyUser < User class AuthUser < User class SuperUser < AuthUser class FieldUser < AuthUser class ClientAdmin < AuthUser 问题是find不适用于AuthUser Model。 查询正在查找类型“AuthUser”,并且不包括其他三种可能性。 编辑:在玩这个时,它开始工作,但仅适用于ClientAdmin和FieldUser,因此似乎应该内置此function。但现在它已回到原始问题

Rails为数据库中的现有字段获取未定义的方法

所以我在问题表中有一个字段,名为is_public ..我迁移了我的数据库,重新启动它,现在当我每次在问题记录中调用is_public记录时都会收到此错误。 undefined method `is_public’ for # 任何想法为什么会发生这种情况?

将Datamapper与现有的rails应用程序一起使用

我有一个使用ActiveRecord的现有Rails 3应用程序,我想切换到Datamapper。 dm-rails页面中给出的说明仅涉及创建新应用程序。 有谁知道如何丢弃所有activerecord dependancies并迁移到datamapper? 谢谢!

Rails特定于数据库的数据类型

这是我第一次使用PostgreSQL试用Rails。 我对代码中timestamp with timezone使用timestamp with timezone的缺乏感到困惑,我通常会看到关于存储绝对时间的列。 一个主要的例子是设计 ,它将列存储为datetime列,该列转换为PostgreSQL中timestamp with out timezone的timestamp with out timezone 。 我认为这是一个不好的做法,因为timestamp with out timezone可能意味着任何时区。 如果您从另一个应用程序访问数据库,您将不知道时间戳引用的时区而不查看Rails。 它只是一个分散的混乱。 有没有办法让我在PostgreSQL的ActiveRecord迁移/模式中创建timestamp with time zone的timestamp with time zone ? 是否会与当前的Rails框架代码产生不兼容问题? 我理解ActiveRecord试图与数据库无关,但这只是一个我不能忽视的宠儿。