Tag: activerecord

我怎样才能看到由Ruby on Rails中给定的ActiveRecord查询生成的SQL

我想看看给定的ActiveRecord查询将生成的SQL语句。 我知道我可以从查询发布后,从日志中获取这些信息,但我想知道是否有一个方法,可以调用和ActiveRecord查询。 例如: SampleModel.find(:all, :select => "DISTINCT(*)", :conditions => ["`date` > #{self.date}"], :limit => 1, :order => '`date`', :group => "`date`") 我想打开irb控制台,并在最后加上一个方法来显示此查询将生成的SQL,但不一定执行查询。

Rails:为什么find(id)在rails中引发exception?

可能重复: 当id 1不存在时,Model.find(1)给出ActiveRecord错误 如果数据库中没有用户id为1,则尝试User.find(1)将引发exception。 为什么是这样?

belongs_to和has_one有什么区别?

belongs_to和has_one什么区别? 阅读Ruby on Rails指南并没有帮助我。

在ActiveRecord中创build重写id

是否有任何方式来重写创build模型的ID值? 就像是: Post.create(:id => 10, :title => 'Test') 将是理想的,但显然不会工作。

belongs_to通过协会

鉴于以下关联,我需要引用Choice模型中的Choice 。 我一直试图使用belongs_to :question, through: :answer来执行这个动作。 class User has_many :questions has_many :choices end class Question belongs_to :user has_many :answers has_one :choice, :through => :answer end class Answer belongs_to :question end class Choice belongs_to :user belongs_to :answer belongs_to :question, :through => :answer validates_uniqueness_of :answer_id, :scope => [ :question_id, :user_id ] end 我正进入(状态 NameError未初始化的常量User::Choice 当我尝试做current_user.choices 它工作正常,如果我不包括 belongs_to […]

为什么所有的活动logging都讨厌?

随着我越来越多地了解面向对象,并开始实施各种devise模式,我不断回到人们讨厌活动logging的情况 。 人们经常说它不能很好地扩展(引用Twitter作为主要例子),但是没有人真正解释为什么它不能很好地扩展; 和/或如何在没有缺点的情况下实现AR的优点(通过类似但不同的模式?) 希望这不会变成一场关于devise模式的圣战 – 我想知道的仅仅是特别的**** Active Record有什么问题。 如果不好,为什么不呢? 还有什么其他问题?

你如何在Rails中发现模型属性?

去年秋天我开始了我的第一个Rails应用程序,并且不得不在架子上搁置了几个月,所有的时间都花在工作上。 我现在有兴趣回到项目并阅读代码,找出我离开的地方。 Rails在运行时dynamic创build模型属性的事实可以节省大量的重复input,但是我发现很难轻易发现所有模型类中存在的属性/属性,因为它们没有在我的类文件中明确定义。 为了发现模型属性,我保持schema.rb文件处于打开状态,并在它和我正在编写的使用模型属性的任何代码之间翻转。 这样做的工作,但是笨重,因为我必须读取模式文件来拾取属性,模型类文件来拾取方法,以及我正在写的任何新的代码来调用属性和方法。 所以我的问题是,如何在第一次分析Rails代码库时发现模型属性? 你一直保持schema.rb文件打开,还是有一个更好的方式,不涉及在模式文件和模型文件之间不断跳转?

如何select数组中的ID Rails ActiveRecord毫无例外

当我有一些IDS,如 ids = [2,3,5] 我执行 Comment.find(ids) 一切正常。 但是,当有不存在的id,我得到一个exception。 当我得到匹配某个filter的ID列表,并且比我做类似的事情时,通常会发生这种情况 current_user.comments.find(ids) 这一次我可能有一个有效的评论ID,但不属于给定的用户,所以没有find,我得到一个exception。 我试过find(:all, ids) ,但它返回所有的logging。 我现在唯一能做的就是 current_user.comments.select { |c| ids.include?(c.id) } 但在我看来,就像超级低效的解决scheme。 有没有更好的方法来select在数组中的ID,而不是在不存在的loggingexception?

Rails:如何链接范围查询与OR而不是AND?

我正在使用Rails3,ActiveRecord 只是想知道如何用OR语句而不是AND连接范围。 例如 Person.where(:name => "John").where(:lastname => "Smith") 通常返回name ='John'和lastname ='Smith',但是我想: name ='John'OR lastname ='Smith'

何时在Rails中添加表中的索引

我有一个关于Rails数据库的问题。 我应该添加“索引”的所有外键像“xxx_id”? 我应该将“索引”添加到自动创build的“ID”列吗? 我应该添加“索引(唯一)”自动创build“ID”列? 如果我一次向两个外键添加索引( add_index (:users, [:category, :state_id]) ,会发生什么?这与为每个键添加索引有何不同? class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :name t.integer :category_id t.integer :state_id t.string :email t.boolean :activated t.timestamps end # Do I need this? Is it meaningless to add the index to the primary key? # If so, do I need :unique […]