小编mu *_*ort的帖子

在rails中将列类型更改为更长的字符串

在第一次迁移时,我在列content上声明为字符串Activerecord根据annotate gem将其设置为字符串(255).

在我将应用程序推送到使用postgres的heroku后,如果我在内容中输入一个长度超过255的字符串,我会得到错误

PGError: ERROR: value too long for type character varying(255)
Run Code Online (Sandbox Code Playgroud)

问题是我需要内容包含一个非常长的字符串(自由文本,可能是数千个字符)

  1. 什么变量(字符串不适合这个)会接受?
  2. 如何创建迁移以替换该列的类型

谢谢

string postgresql ruby-on-rails ruby-on-rails-3.1 rails-activerecord

88
推荐指数
2
解决办法
5万
查看次数

什么是'$$'用于PL/pgSQL

作为PL/pgSQL的新手,这个函数中双美元符号的含义是什么:

CREATE OR REPLACE FUNCTION check_phone_number(text)
RETURNS boolean AS $$
BEGIN
  IF NOT $1 ~  e'^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$' THEN
    RAISE EXCEPTION 'Wrong formated string "%". Expected format is +999 999';
  END IF;
  RETURN true; 
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
Run Code Online (Sandbox Code Playgroud)

我猜,在RETURNS boolean AS $$,$$是一个占位符.

最后一行有点神秘: $$ LANGUAGE plpgsql STRICT IMMUTABLE;

顺便说一句,最后一行是什么意思?

postgresql quotes plpgsql dollar-sign dollar-quoting

82
推荐指数
2
解决办法
3万
查看次数

如何更新表中的行或如果它不存在则插入它?

我有下表的柜台:

CREATE TABLE cache (
    key text PRIMARY KEY,
    generation int
);
Run Code Online (Sandbox Code Playgroud)

我想增加其中一个计数器,或者如果相应的行还不存在则将其设置为零.有没有办法在标准SQL中没有并发问题的情况下执行此操作?该操作有时是交易的一部分,有时是分开的.

如果可能的话,SQL必须在SQLite,PostgreSQL和MySQL上不加修改地运行.

搜索产生了一些想法,这些想法要么遇到并发问题,要么特定于数据库:

  • 尝试换INSERT行,UPDATE如果出现错误.不幸的是,INSERT中止当前事务的错误.

  • UPDATE行,如果没有修改行,则为INSERT新行.

  • MySQL有一个ON DUPLICATE KEY UPDATE条款.

编辑:感谢所有的好评.看起来保罗是对的,并没有单一,便携的方式来做到这一点.这对我来说非常令人惊讶,因为它听起来像是一个非常基本的操作.

mysql sql sqlite postgresql upsert

80
推荐指数
6
解决办法
13万
查看次数

ActiveRecord在日期字段上按年,日或月查找

我有一个具有日期属性的ActiveRecord模型.是否可以使用该日期属性按年,日和月查找:

Model.find_by_year(2012)
Model.find_by_month(12)
Model.find_by_day(1)
Run Code Online (Sandbox Code Playgroud)

或者只是可以find_by_date(2012-12-1).

我希望我可以避免创建年,月和日属性.

activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord

66
推荐指数
7
解决办法
5万
查看次数

将逗号分隔的列数据拆分为其他列

我在列中有逗号分隔的数据:

Column 
------- 
a,b,c,d 
Run Code Online (Sandbox Code Playgroud)

我想将逗号分隔数据拆分为多个列以获得此输出:

Column1  Column2 Column3 Column4 
-------  ------- ------- -------
a        b       c       d 
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

postgresql split delimiter postgresql-8.4

61
推荐指数
2
解决办法
11万
查看次数

rename_column会处理索引吗?

说,我们有这样的事情:

add_column :users, :single, :boolean
add_index :users, :single
Run Code Online (Sandbox Code Playgroud)

然后我们做

rename_column :users, :single, :married
Run Code Online (Sandbox Code Playgroud)

ActiveRecord和/或数据库是否也会处理索引的重命名,还是我必须手动删除索引并再次添加它?

activerecord ruby-on-rails database-indexes ruby-on-rails-3 rails-activerecord

58
推荐指数
1
解决办法
1万
查看次数

Ruby on Rails 3:"类的超类不匹配......"

平台:Mac OSX 10.6

在我的终端中,我使用"rails c"启动Ruby控制台

按照Ruby on Rails 3教程构建一个类:

class Word < String 
  def palindrome? #check if a string is a palindrome
    self == self.reverse
  end
end
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

TypeError: superclass mismatch for class Word
    from (irb):33
    from /Users/matthew/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.5/lib/rails/commands/console.rb:44:in `start'
    from /Users/matthew/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.5/lib/rails/commands/console.rb:8:in `start'
    from /Users/matthew/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.5/lib/rails/commands.rb:23:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

教程显示它没有问题,我知道代码很好; 我搜索了其他相关问题,但他们都涉及从Ruby 2迁移到3或erb vs eruby.

ruby ruby-on-rails ruby-on-rails-3

56
推荐指数
5
解决办法
6万
查看次数

测试bash函数返回值的正确方法是什么?

我想在if语句中测试一个bash函数返回值,如下所示:

if [[ func arg ]] ; then …
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息,如:条件二进制运算符预期.

这样做的正确方法是什么?

是吗:

 if [[ $(func arg) ]] ; then ...
Run Code Online (Sandbox Code Playgroud)

bash function

56
推荐指数
4
解决办法
8万
查看次数

单击表单中的按钮时会提交表单.怎么避免这个?

我使用twitter-boostrap,我想在我的表单中使用这些单选按钮.问题是,当我点击任何这些按钮时,表格立即提交.怎么避免这个?我只想使用像单选按钮这样的默认按钮.

从:

<%= form_for @product do |f| %>
    <div class="control-group">
      <%= f.label :type, :class => 'control-label' %>

      <div class="controls">
        <div class="btn-group" data-toggle="buttons-radio">
          <button class="btn">Button_1</button>
          <button class="btn">Button_2</button>
        </div>
      </div>

    </div>

    <div class="form-actions">
      <%= f.submit nil, :class => 'btn btn-primary' %>
      <%= link_to 'Cancel', products_path, :class => 'btn' %>
    </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

// application.js
$('.tabs').button();
Run Code Online (Sandbox Code Playgroud)

html ruby-on-rails twitter-bootstrap

53
推荐指数
1
解决办法
3万
查看次数

检查日期是否在过去的Javascript中

全部,我正在使用日期选择器的jQuery UI.我试图用javascript检查,但用户输入的日期是过去的.这是我的表单代码:

<input type="text" id="datepicker" name="event_date" class="datepicker">
Run Code Online (Sandbox Code Playgroud)

那么我如何用Javascript检查这一点以确保它不是过去的日期?谢谢

javascript validation jquery jquery-ui date

50
推荐指数
2
解决办法
9万
查看次数