Tag: activerecord

将SQL语法转换为ActiveRecord查询的工具

有许多问题可以帮助将特定的SQL查询转换为ActiveRecord查询。 是否有一些帮助/指导[在线]工具自动进行转换?

Rails ActiveRecord:Three Table has_many through:associations

我正在尝试构建一个表来处理某个广告系列已使用以下模型关联设置的位置和类别: class Campaign < ActiveRecord::Base has_many :campaign_category_metro_bids, dependent: :destroy has_many :metros, through: :campaign_category_metro_bids has_many :categories, through: :campaign_category_metro_bids end class Metro < ActiveRecord::Base has_many :campaign_category_metro_bids has_many :campaigns, through: :campaign_category_metro_bids has_many :categories, through: :campaign_category_metro_bids end class Category < ActiveRecord::Base has_many :campaign_category_metro_bids has_many :campaigns, through: :campaign_category_metro_bids has_many :metros, through: :campaign_category_metro_bids end class CampaignCategoryMetroBid < ActiveRecord::Base belongs_to :campaign belongs_to […]

Rails:after_create停止保存时出现exception

简单的问题。 我有一个ActiveRecord模型,我希望在保存记录后执行后期处理。 所以在模型中我有一个queue_for_processing方法,可以将作业粘贴到我的Resque队列中。 为了在我的记录成功持久化后执行此操作,我在我的模型中编写了以下内容: after_create :queue_for_processing 很简单。 我原以为一切都按预期工作除了昨晚我的redis服务器发生故障,事情发生了变化。 我的期望是记录仍然会被保存,我可以稍后手动处理该作业。 但是queue_for_processing方法抛出exception(预期行为)并停止保存记录。 我误解了after_create是如何工作的吗? 或者我的理解是否正确并且发生了什么时髦? 谢谢。

如何使用ActiveRecord访问Postgres列的默认值?

我正在尝试访问Postgres 9.2数据库中列的默认值。 通过使用原始SQL,我可以validation列默认为“users_next_id()”: > db = ActiveRecord::Base.connection > db.execute(“SELECT table_name,column_name,column_default FROM information_schema.columns WHERE table_name = ‘users’ and column_name =’id'”).first => {“table_name”=>”users”, “column_name”=>”id”, “column_default”=>”users_next_id()”} 但是当我使用AR的’columns’方法时,默认值似乎是nil: [26] pry(main)> db.columns(‘users’)[0]=> # 这不会导致任何问题(除了让我困惑),但这是预期的行为吗? 我是否对“列”方法做出了错误的假设?

哪个create / create_record在ActiveRecord中消失了?

我有一个ActiveRecord的审计猴子补丁,适用于从2.x到4.0.2的所有版本的Rails,但不适用于ActiveRecord 4.1。 4.0的代码看起来像这样 module HLLAuditStamps def self.included(base) # create/update became create_record/update_record in Rails-4.0 base.alias_method_chain :create_record, :audit base.alias_method_chain :update_record, :audit private def create_record_with_audit set_audit_attributes . . . 这适用于4.0.2但在4.1.2中抛出此exception: create_record’ for class ActiveRecord :: Base的未定义方法create_record’ for class ‘(NameError) 如果我在rails-4.1.2项目中进入rails控制台并列出ActivRecord :: Base中的方法,我会看到: . . . – :count_by_sql – :create – :create! – :create_with – :current_scope . . . […]

HMT collection_singular_ids =删除连接模型是直接的,不会触发销毁回调

刚遇到has_many问题:通过关联和after / before-destroy回调没有被触发。 说,我有用户,组和称为成员资格的中间关系。 我有一个表单,允许用户通过在核对相关复选框时创建新的成员资格记录来注册成组。 基本上是一组group_id。 看起来像这样: Which group would you like to join? (check all that apply) [] Group A [] Group B [] Group C 我希望记录一些行动,例如加入一个小组或将一个小组留在活动日志表中,并做一些其他不太重要的问题。 我有以下定义: class Group :memberships end class Membership < AR::Base belongs_to :user belongs_to :group after_create :log_event_to_audit_table after_destroy :log_event_to_audit_table end class User :memberships attr_accessible :group_ids # enables mass-assignment end […]

Rails,activerecord:self vs self.attribute

在rails中访问活动记录列/属性时,使用self [:attribute]和self.attribute之间有什么区别? 这会影响吸气剂和二传手吗?

errors.full_messages:属性名称出现两次

这一直困扰着我。 我的所有模型都会出现此问题,但我会使用其中一个,测验,作为示例。 测验具有以下validation: validates_presence_of :size, :style 我正在使用I18n,并且我的翻译文件中有以下设置:(这些只是标准的错误消息,但我已将它们包含在我的en.yml中,以便很容易看到结构,如果我想要为任何特定型号覆盖它们) activerecord: errors: messages: inclusion: “{{attribute}} is not included in the list” invalid: “{{attribute}} is invalid” empty: “{{attribute}} can’t be empty” blank: “{{attribute}} can’t be blank” record_invalid: “Validation failed: {{errors}}” 问题是这样的:如果我做了一个新的测验,这将失败validation,然后查看quiz.errors.full_messages,每个错误消息都有属性然后是完整的消息: >> quiz = Quiz.create => >> quiz.errors.full_messages => [“Size Size can’t be blank”, “Style Style can’t be blank”] […]

如何获得最高计数的关联模型(Rails)?

用户has_many解决方案 如何为拥有最多解决方案的用户订购用户? 我正在努力寻找十大用户,但我不确定如何做到最干净或最有效的方法呢? 有没有人有一个计算成本太高的例子?

怎么逃避? (问号)运算符在Rails中查询Postgresql JSONB类型

我正在使用Rails 4.2和Postgres 9.4来试用新的JSONB数据类型。 我的数据库中的一个JSONB列包含一个数组,我希望能够查询此数组包含特定值的记录。 我想出了如何使用新的JSONB“问号”(“包含”)运算符来完成此操作,如下所示: http : //www.postgresql.org/docs/9.4/static/functions-json.html 所以在原始SQL中我可以像在这个例子中那样工作: SELECT * FROM people WHERE roles ? ‘32486d83-4a38-42ba-afdb-f77ca40ea1fc’; 但我无法通过ActiveRecord看到从Rails中进行此查询的任何方法。 我尝试使用“where”方法进行原始查询,如下所示: Person.where(“roles ? ?”, “32486d83-4a38-42ba-afdb-f77ca40ea1fc”) 但由于问号是用于替换参数的特殊字符,我收到此错误: ActiveRecord :: PreparedStatementInvalid:在:roles中错误的绑定变量数(1为2)? ? 我想我需要一种方法来逃避“?” 字符,因为我希望它从字面上通过。 我试过了 \? 和?? 没有运气。 任何帮助表示赞赏!