Tag: activerecord

我怎样才能找到模型的关系?

我希望,当给定特定模型时,返回与之关联的所有相关模型。 例如: class Dog < ActiveRecord::Base has_many :bones belongs_to :master end d = Dog.first d.associations #<== should return [Bone, Master] 有没有办法做到这一点,而不必自己滚? 如果没有,那么有什么建议可以做到最好吗?

rails 4 activerecord TypeError nil不是符号

看来sql server中的表是在select语句中放置nil 。 我不知道如何解决这个问题,如果我切换到任何其他表,我可以很容易地获得第一个记录。 还有其他人处理过这个bug吗? 我把桌子分开并构建了一个视图。 它仍然这样做。 猴子修补这个犹豫不决。 想法? 我是如何连接到SQL Server的: 我的模特: class Deal < ActiveRecord::Base self.table_name = 'vwStorePromosExtSummaryGlobal' end 我的控制器: class V1::DealsController 0.6.1′ gem ‘activerecord-sqlserver-adapter’, github: ‘arthrex/activerecord-sqlserver-adapter’ gem ‘active_model_serializers’, ‘~> 0.8.1’ 当我打开gem中的确切错误时,我看到: 97: def serializable_hash(options = nil) 98: options ||= {} 99: 100: attribute_names = attributes.keys 101: if only = options[:only] 102: attribute_names &= […]

Rails Active Record:与:order和:group一起查找

我有一个像这样的结构: class User has_many :dongles has_many :licences, :through => :dongles end class Dongle has_many :licences belongs_to :user end class Licence belongs_to :dongle end 但是,时间过去了,用户最终会获得每个加密狗的多个许可证。 合理地,该应用程序想要总结每个许可证的最新许可证。 我知道我可以天真地这样做: user.dongles.each do |dongle| licence = dongle.licences.find(:first, :order => ‘created_at DESC’) # do something with the licence info end 但有没有办法通过集合来做到这一点,并避免通常通过天真的方式做出的大量查询? 我试过这个: user.licences.find(:all, :order => ‘created_at DESC’, :group => ‘dongle_id’) 这确实为每个加密狗返回一个许可证,但它所采用的第一个许可证由“id”决定, […]

迁移时需要使用add_index来获取belongs_to / has_many关系吗? (Rails 3.2,Active Record)

我的问题很简单,但我找不到明确的答案。 我建立了每日优惠Rails应用程序。 每笔交易都有很多产品(has_many) 每个产品都属于一笔交易 从Rails指南中获取 2.3,我将在迁移中使用它: class CreateDeal < ActiveRecord::Migration def change create_table :deals do |t| t.string :name t.timestamps end create_table :products do |t| t.belongs_to :Deal t.timestamps end end end 自动,Rails /活动记录会在产品表中添加一列Transactions_id对吗? 我是否需要通过添加到我的迁移add_index手动(如下所示)在此deals_id列上添加索引,还是“自动”完成,因为我设置了belongs_to / has_many关系? create_table :products do |t| t.belongs_to :Deal t.timestamps add_index :products, :deals_id end

从ActiveRecord原始SQL获取类型化结果

在续集中,我可以这样做: irb(main):003:0> DB[“select false”].get => false 返回false布尔值。 我希望能够在ActiveRecord中做类似的事情: irb(main):007:0> ActiveRecord::Base.connection.select_value “select false” => “f” 如您所见,它返回字符串”f” 。 有没有办法用ActiveRecord获取一个假布尔值? (同样,我可能正在调用一个返回timestamptz,数组等的函数 – 我希望返回的值具有正确的类型) 我的用例:我正在调用数据库函数,想要取回一个键入的结果而不是字符串。

如何以不同的间隔循环日期范围?

我有一个日期范围(从,到),我希望循环通过不同的间隔(每日,每周,每月,…) 我如何循环这个日期范围? 更新 谢谢你的回答,我想出了以下内容: interval = ‘week’ # month, year start = from while start to stop = to end logger.debug “Interval from #{start.inspect} to #{stop.inspect}” start = stop.send(“beginning_of_#{interval}”) start += 1.send(interval) end 这将循环一个日期范围,其间隔为周,月或年,并且考虑给定间隔的开始和结束。 因为我在我的问题中没有提到这一点,所以我选择了将我推向正确方向的答案。

Scaffolding ActiveRecord:相同数据类型的两列

另一个基本的Rails问题: 我有一个数据库表,需要包含对特定数据类型的两个不同记录的引用。 假设的例子:我正在制作video游戏数据库。 我有一张“公司”表。 我希望每个“Videogame”条目只有一个开发人员和一个发布者。 我知道,如果我想拥有一家公司,我可以做以下事情: script/generate Videogame company:references 但我需要两家公司。 我宁愿不使用连接表,因为只能有两个给定的数据类型,我需要它们是不同的。 似乎答案应该是非常明显的,但我无法在互联网上的任何地方找到它。

Rails / ActiveRecord:保存对模型关联集合的更改

我是否必须保存对模型集合中各个项目的修改,或者是否有一种方法可以在保存模型时调用它来保存它们。 #save似乎没有这样做。 例如: irb> rental = #… #=> # irb> rental.dvd #=> #<Dvd id: 3252, title: "The Women of Summer", year: 1986, copies: 20, is_new: false, is_discontinued: false, list_price: #, sale_price: #> irb> rental.dvd.copies += 1 #=> 21 irb> rental.save #=> true irb> rental.dvd #=> #<Dvd id: 3252, title: "The Women of Summer", year: 1986, […]

如何使“喜欢条款”不区分大小写

嗨我在Ruby On Rails中使用LIKE子句,当我尝试通过键入“more”来搜索记录时它不会返回任何内容,但是当我使用“More”时 ,它会返回包含More keyword的记录,所以它似乎表现为区分大小写 , 现在我的问题是我们可以将它设为Case-Insensitive ,如果是,那么请告诉我。 这是我目前使用的查询: Job.where(‘title LIKE ? OR duration LIKE ?’, “%#{params[:search]}%”, “%#{params[:search]}%”) 谢谢。

Ruby on Rails:ActiveRecord对象创建的确认页面

使用Ruby on Rails我想在创建ActiveRecord对象之前有一个确认页面。 在提交之前,用户将看到他们正在创建的项目的预览,并且将对象保存在数据库中 一种常见的模式; 用户访问/输入/新 用户输入详细信息并单击提交 用户被重定向到/ entry / confirm,显示条目并单击提交或编辑以更正错误 对象已保存 你会如何实现它?