Tag: activerecord

无法批量分配受保护的属性:user

我正在开发一个简单的应用程序,要求我提交表单。 我创建了两个模型。 user.rb class User < ActiveRecord::Base attr_accessible :email has_many :item end item.rb的 class Item < ActiveRecord::Base attr_accessible :user_id belongs_to :user end 我没有使用用户表单视图创建用户,而是尝试使用项目表单视图创建用户。 项目/ _form.html.haml = nested_form_for @item do |form| = form.fields_for :user do |builder| = builder.text_field :email = form.submit “Save” 我在这里错过了什么吗? 我正在使用nested_form_for btw。 谢谢。

RAILS:如何查询每个关联都具有非null属性的所有对象

我正在研究Rails 3.0.5和PostgreSQL。 我有一个型号Offer ,有很多Products 。 class Offer < ActiveRecord::Base has_many :products end class Product < ActiveRecord::Base belongs_to :offer end 当您在第三方服务中注册时,该产品的ID会更新。 让我们称之为service_id 。 我想要一个优惠范围,它可以获得在第三方服务中注册的每个产品的所有优惠。 换句话说,如果它的所有产品都有服务ID,我只对商品实例感兴趣。 offer范围: joins(:products).where(“products.service_id is not NULL”) ,只返回至少有一个非null产品的商品。 任何帮助,将不胜感激。 (PS:对不起标题,我尽力解释它。) 编辑: 例如:如果我有2个优惠:Offer1和Offer2。 Offer1的产品为p1和p2,Offer2的产品为p3和p4。 假设p1,p2和p3有服务但p4没有服务。 查询应仅返回Offer1。

通过Rails访问has_many上的其他值

我在访问has_many通过名为权限的附加参数的值时遇到了麻烦。 这可能很简单。 我的3个型号是 class User < ActiveRecord::Base has_many :players_users has_many :players, through: :players_users end class Player < ActiveRecord::Base has_many :players_users has_many :users, through: :players_users end class PlayersUser < ActiveRecord::Base belongs_to :user belongs_to :player validates :player_id, uniqueness: { scope: :user_id } end 我的控制器保存记录没有问题。 将权限值添加到正确的连接表。 def create @players = Player.new(players_params) @user= current_user if @players.save @player = Player.last […]

如何将BIG SQL文件导入rails数据库?

我有一个非常庞大的(> 8mo)sql文件,基本上创建了2个表并用数据填充它们。 这是Sequel Pro生成的转储。 我的第一个想法是逐行读取文件并运行“执行”命令,但是我的错误是我的字符串太大了。 Mysql2 ::错误:有一个大于’max_allowed_pa​​cket’字节的数据包 有没有办法直接运行SQL文件而不是读取它并尝试执行? 仅供参考我可以将这个文件分成2个部分分别用于2个表格,但是我之后会有另一个更大的文件,并且不能分割。 我正在使用Rails 3.0.3与ActiveRecord和MySQL数据库。

在rubyonrails中,如何从ActiveRecord :: Relation对象获取关联的模型类?

假设我有一个模型: class Post end posts = Post.where(***) puts posts.class # => ActiveRecord::Relation 那么如何通过变量’posts’获取模型类名,也许是一些名为model_class_name的方法: put posts.model_class_name#=>发布 谢谢 :)

Rails模型的默认条件

我有一个模型,其中有一个名为deleted的字段,用于标记那些已删除的项目。 所以通常我只想查询那些deleted = false项目,并在某些特殊情况下列出那些已删除的项目以进行恢复。 有可能吗? 我现在能做的就是使用命名范围:conditions => {:deleted => false} 有没有更好的方法来做到这一点,当我做Item.other_named_scope ,我可以找到所有那些未删除的项目?

ActiveRecord:获取今天应该被禁止的所有用户

我有两个型号: class User < ActiveRecord::Base has_many :ban_messages, dependent: :destroy end class BanMessage < ActiveRecord::Base belongs_to :user end Table BanMessage包含一个字段t.datetime :ban_date ,用于存储禁止用户的日期。 User表包含字段status ,其中包含一个状态值(活动,暂停,禁止)。 当我向用户发送BanMessage时,他的状态字段从“活动”变为“暂停”。 我也可以激活用户,所以他不会被禁止’:ban_date’ ,但他的BanMessage不会被破坏。 因此,我需要创建查询以选择状态为“已挂起”的所有用户,这些用户在其最新的BanMessages记录“ban_date”字段中具有DateTime值,该值位于’DateTime.now.beginning_of_day’和’DateTime.now.end_of_day’ 。

使用ActiveRecord和Rails将数据插入postgresql数据库会出现此错误:RuntimeError:ERROR C22003 Minteger o

我正在使用Ruby 1.8.6和rails 2.1.1(我也测试了rails 2.2.2)。 我一直在使用Sqlite3,我最近迁移到Postgresql 8.2.6进行生产使用。 现在出现此错误。 有趣的是,当我复制插入语句并使用psql直接将其插入postgres时它工作正常。 我想问题是在轨道级别的某个地方。 但是,我不知道它是什么。 所以,如果有人知道问题是什么或如何解决它,请告诉我。 RuntimeError: ERROR C22003 Minteger out of range Fint8.c L1008 Rint84: INSERT INTO “resource_usages” (“measurement_type”, “updated_at”, “time”, “max”, “min”, “average”, “tst_data_id”, “created_at”) VALUES(E’jmxMemHeapMax’, ‘2009-01-16 12:54:56.600105’, 1, 5726666752, 5726666752, 5726666752, 2, ‘2009-01-16 12:54:56.600105′) RETURNING “id” /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:147:in `log’ /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/postgresql_adapter.rb:484:in `execute’ /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/postgresql_adapter.rb:929:in `select_raw’ /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/postgresql_adapter.rb:916:in `select’ /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache’ /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/abstract/query_cache.rb:61:in […]

在关联声明中使用“self”(:has_many,:has_one)

我需要在:has_many声明中引用模型的self。 我有一节课我们会打电话给Foo。 Foo:has_many Bar。 Foo有一个名为randomize的布尔属性,用于确定:has_many关系中Bars的顺序。 如果randomize为true,则它们按“RAND()”或“RANDOM()”排序,具体取决于DB。 如果没有,它们按id排序。 我必须在协会上发表这个声明,因为我正在使用预先加载。 我很清楚我可以在Foo中定义一个返回我想要的方法,但我需要一次加载所有内容,否则单独运行400-500个查询=坏。 class CreateFoo false end end end class CreateBar < ActiveRecord::Migration def self.up create_table :bars do |t| t.string :name t.references :foo end end end class Bar < ActiveRecord::Base belongs_to :foo end class Foo self.randomize ? ‘RAND()’ : ‘id’ end 如何在has_many声明中访问self的属性? 我尝试过但失败的事情: 创建一个返回正确字符串的Foo方法 创建一个lambda函数 哭了 这可能吗? 问题似乎在于:has_many中的“self”不属于Foo类型: undefined […]

取消Ruby on Rails中的当前/活动查询

在我的项目中,我正在运行一个返回大量数据的大量查询。 由于此查询的大小,运行时有时超过1分钟。 忽略这可能造成的其他问题,有没有办法取消当前运行的查询? 例如,用户启动查询并重定向到标准的“加载结果…”页面。 如果他们然后决定他们不再需要结果,他们可以点击“取消”按钮,这将以某种方式终止正在运行的查询。 这是可能的,怎么做? 谢谢!