Tag: activerecord

独特的加入Rails

video有很多活动 我正在努力获取将来安排活动的所有video。 我已经有了这个: named_scope :scheduled_in_future, :joins => :event, :conditions => [“event.scheduled_start > ? AND event.status = ?”, Time.now.to_i, ‘PENDING’] 这是有效的,但如果同一个video将来有多个事件,它将给我重复的video记录。 当然,我可以通过数组并清除重复项,但必须有一种SQL方法来完成它。 我试过添加一个 :select => “DISTINCT(video.id)” 但它只返回ID字段而不是整个记录。

Rails查询两个小时之间的时间戳

我在Ruby on Rails中遇到问题,我需要允许用户设置两个时间列,然后查询该模型的所有实例,这些实例具有两个时间戳的小时内的当前时间。 天无所谓,只是在指定的时间内是开始和结束时间戳。 谢谢, 布赖恩

find_or_create_by_id的最佳方法,但如果找到记录则更新属性

如果记录不存在,并且 – 如果记录确实存在 – 更新其属性,我正在寻找一种干净的方法来创建具有一组属性的记录。 我喜欢find_or_create_by_id调用中块的语法。 这是我的代码: @categories = Highrise::DealCategory.find(:all) @categories.each do |category| puts “Category: #{category.name}” Category.find_or_create_by_id(category.id) do |c| c.name = category.name end end 这里的问题是,如果记录存在但名称已更改,则不会更新。 寻找这个问题的清洁解决方案……

Controller中的ActiveRecord :: AssociationTypeMismatch#在下拉列表中创建Rails自联接

我在Rails 5中自我加入时遇到ActiveRecord :: AssociationTypeMismatch错误,我无法弄清楚如何修复。 这是一个简单的rails应用程序,用户可以分享艺术家(如David Bowie)关于另一位艺术家(如Lou Reed)的引用。 所以,引用可能如下所示: 引用主题:David Bowie内容:“他是一位大师。” 演讲者:Lou Reed 我有一个Quote模型和一个Artist模型,主题和演讲者被定义为Artist模型上的自联接。 以下是模型: class Artist { order(name: :asc) } belongs_to :user has_many :spoken_quotes, class_name: “Quote”, foreign_key: :speaker_id has_many :topic_quotes, class_name: “Quote”, foreign_key: :topic_id validates :user_id, presence: true validates :name, presence: true, length: { maximum: 60 }, uniqueness: { case_sensitive: false } end class Quote […]

动态创建从ActiveRecordinheritance的类?

我希望能够动态创建类,用于从我的Rails应用程序之外编写,inheritance自ActiveRecord。 我坚持这样的事情: require ‘active_record’ def create_arec(table_name) Class.new ActiveRecord::Base do self.table_name = table_name yield end end Band = create_arec ‘bands’ do scope :only_rock, -> {where genre: ‘rock’} end rock_bands = Band.only_rock #undefined method `only_rock’ 我如何使它工作,或者有人能告诉我更好的方法吗?

不区分大小写的find_or_create_by_whatever

我希望能够做Artist.case_insensitive_find_or_create_by_name(artist_name) [1](并使它适用于sqlite和postgreSQL) 实现这一目标的最佳方法是什么? 现在我只是直接向Artist类添加一个方法(有点难看,特别是如果我想在另一个类中使用此function,但无论如何): def self.case_insensitive_find_or_create_by_name(name) first(:conditions => [‘UPPER(name) = UPPER(?)’, name]) || create(:name => name) end [1]:理想情况下,它将是Artist.find_or_create_by_name(artist_name, :case_sensitive => false) ,但这似乎更难实现

如何在Rails ActiveRecord中正确分配has_many / belongs_to关系?

我有一个带有文章和作者模型的rails应用程序。 如果我有作者和post并希望表明作者应该是文章的所有者,或者文章属于作者,那么最佳做法是什么? 特别是: 如果我设置它会有所作为吗? my_article.author_id = author_one.id 或者如果我这样做 author_one << my_article 使用的关联是 作者has_many文章 文章belongs_to作者 顺便说一句,如果出现类似的问题,最好的方法是什么呢?

如何将ActiveRecord表名称转换为模型类名称

有没有可能将ActiveRecord表名正确转换为模型类名? 我找到了一个黑客 def model_for_table(table_name) table_name.classify.constantize end 但由于我们在许多模型中使用set_table_name,因此无法工作。 有什么办法吗?

查找符合所有类别的产品(Rails 3.1)

我正在努力与Rails 3.1.1中的ActiveRecord查询。 我有2个型号,产品和类别,从产品到类别的has_and_belongs_to_many(产品可以有很多类别)。 我正在尝试编写一个搜索查询,该查询将查找具有所有指定类别的产品(想想用户可以选择要搜索的X类别的搜索UI)。 我可以做这个: results = Product.joins(:category_products).where(‘category_products.category_id’ => [1,5,8]) 但是返回具有任何这些类别的产品(即产生SQL“IN(1,5,8)”子句)。 如何创建将执行ALL匹配样式的查询? 例如找到包含所有这些category_ids的产品……

rails union hack,如何将两个不同的查询拉到一起

我有一个查询,它搜索同一个表中的两个单独的字段…寻找最有可能是特定城市的位置,但也可能是一个国家……即需要两个字段。 表看起来像: Country City Germany Aachen USA Amarillo USA Austin 结果: Keyword Sideinfo Aachen Germany USA Country Austin USA Germany Country 基本上我想知道是否有更简洁的方法来做这个,因为我必须使用两个单独的查询然后将它们添加在一起,排序等等(这很好): def self.ajax(search) countries = Location.find(:all, :select=> ‘country AS keyword, “Country” AS sideinfo’, :joins => :hotels, :conditions => [ ‘hotels.email IS NOT NULL AND country LIKE ?’, “#{search}%” ], :group => :country ) cities […]