Tag: rails activerecord

在validation之前循环通过自我属性进行修改

我创建了一个简单的before_validation: before_validation :strip_tabs def strip_tabs end 在我的课程中,我想循环遍历所有属性并从每个值中删除制表符。 我在SO上找到的大多数post都是想要设置1个属性的人。 但我想编辑我的所有价值观。 问题:如何循环模型的所有自属性并进行编辑。 朋友建议了这个,但是content_column_names不存在: self.content_column_names.each {|n| self[n] = self[n].squish} 更新1:更多代码: class PersonalInfo include ActiveModel::Validations include ActiveModel::Validations::Callbacks extend ActiveModel::Translation extend ActiveModel::Callbacks include Sappable require ‘ext/string’ attr_accessor \ :first_name, :middle_name, :last_name,:birthdate,:sex, :telephone,:street,:house_number,:city,:postal_code,:country, :e_mail, :nationality, :salutation, :com_lang validates :e_mail, :email => {:strict_mode => true} validate :validate_telephone_number validate :age_is_min_17? before_validation :strip_tabs def […]

Rails 4.2:日志中的未知属性或服务器错误

我有一个带有select_tag和options_from_collection_for_select的表单,我似乎无法通过。 在视图中,当上传ID设置为uploadzip_id我得到302重定向,当它设置为uploadzip_ids ,我得到一个Unknown Attribute错误。 我有点困惑,因为我与外键设置了我的关系。 我确实有另一个模型,名为Uploadpdf复选框工作正常。 这是设置.. class Campaign < ActiveRecord::Base has_one :uploadzip end class Uploadzip < ActiveRecord::Base belongs_to :campaign end DB / schema.rb create_table “campaigns”, force: :cascade do |t| t.string “name” t.text “comment” t.datetime “created_at”, null: false t.datetime “updated_at”, null: false create_table “uploadzips”, force: :cascade do |t| t.string “file_name” t.string “file_type” t.datetime “date” t.integer […]

具有活动记录查询接口的模糊搜索

我在我的rails应用程序中进行模糊搜索,我想要的是这个: select * from `user` where name like ‘%abc%’ 我试过这样做: name = ‘abc’ User.where(“name like ‘%?%'”, name) 它失败了,在它记录的控制台中: select * from `user` where name like ‘%’abc’%’ 最后我试了这个 name = ‘abc’ User.where(“name like ?”, ‘%’ + name + ‘%’) 有效。 但我认为它不喜欢rails方式,有没有更好的方法呢?

创建或覆盖Rails Active Record宏

在Rails应用程序中,Active Record创建created_at和updated_at列感谢宏(它似乎也被称为“魔术列”)。 请参阅Active Record Migrations 我对这种机制有一些疑问: 是否可以覆盖它以获得第三列(例如deleted_at )? 例如,是否可以创建一个新的宏t.publishing来创建publish_up和publish_down列? 在哪里编码? 显然,我知道我可以手动添加这些列,但我想知道如何用宏来实现它。 在Rails上工作4。

rails migration:postgresql for md5 of random string as default

Rails 3 + postgresql 我希望有一个随机字符串的sha用于列的默认值。 所以,在我的迁移中,我有: t.string :uniqueid, default: md5(random()::text) 然而,我无法让它实际产生任何东西,我使用了反引号,引号等。 从我看过的例子来看,似乎pg函数只能在SELECT语句中使用。 这是准确的吗? 有关如何实现这一目标的任何想法? 谢谢

组主动记录关系

在桌面上选择后,我得到一个结果: [#, # […] 如何对url分组并保留key_id ,例如: [“http://www.url.com/1”, [1, 2]]=>2 谢谢

下一个可用的记录ID

@user = User.new @user.id返回nil但我需要在保存之前知道它。 可能吗 ?

从ActiveRecord / Rails查询中检索单个记录

我发出如下的查询,完全检索0或1条记录: car = Car.where(vin: ‘1234567890abcdefg’) 返回的当然是长度为1的汽车列表。所以我最终在查询结束时添加.first : car = Car.where(vin: ‘1234567890abcdefg’).first 好像在Rails中应该有更好的方法。 是否存在类似.onlyOne东西,只返回一辆Car并且如果超过1则抛出exception? car = Car.where(vin: ‘1234567890abcdefg’).onlyOne 要么 car = Car.onlyOne(vin: ‘1234567890abcdefg’)

Rails 3忽略Postgres唯一约束exception

什么是挽救exception并继续处理的正确方法? 我有一个具有文件夹和项目的应用程序,通过名为folders_items的连接表具有habtm关系。 该表具有唯一约束,确保没有重复的项目/文件夹组合。 如果用户尝试多次将项目添加到同一文件夹,我显然不希望添加其他行; 但我也不想停止处理。 当违反唯一约束时,Postgres会自动抛出exception,因此我尝试在控制器中忽略它,如下所示: rescue PG::Error, :with => :do_nothing def do_nothing end 这在单次插入时工作正常。 控制器执行渲染,状态代码为200.但是,我有另一种方法在循环中执行批量插入。 在该方法中,控制器在遇到第一个重复行时退出循环,这不是我想要的。 起初,我认为循环必须包含在正在回滚的事务中,但事实并非如此 – 重复之前的所有行都被插入。 我希望它只是忽略约束exception并移动到下一个项目。 如何防止PG :: Errorexception中断此操作?

rails 3 / postgres – 如果不应用,则为字符串多长时间:模式中的限制

我的googlefu必须是弱的,因为我找不到任何东西来告诉我Rails应用程序中的字符串列的默认限制(在Heroku上托管,使用PostgreSQL作为数据库)。 任何帮助,将不胜感激!