小编m_x*_*m_x的帖子

是否有符号数组的文字符号?

我喜欢这个字符串数组的文字表达式:

%w( i can easily create arrays of words )
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个文字来获得一个符号数组.我知道我能做到

%w( it is less elegant to create arrays of symbols ).map( &:to_sym )
Run Code Online (Sandbox Code Playgroud)

但是使用文字就好了.

ruby arrays symbols syntactic-sugar

167
推荐指数
2
解决办法
4万
查看次数

Git:差异/合并输出中+/-符号的数量是什么意思?

可能重复:
Git Merge:这是什么意思?
Git diff --stat解释

抱歉这个愚蠢的问题,但我无法在任何地方找到明确的答案.

当你在git中合并两个分支时,你得到一个这样的输出:

 some_file.txt  |  564 ++++++++++++++--
Run Code Online (Sandbox Code Playgroud)

我认为已了解 +-意味着添加和删除,但是:

  • 什么迹象的数量代表什么? 当你几乎没有变化时,每个标志似乎代表一条线,但是当你有更多的标志时,我无法得到代表的逻辑

  • 是某种变化的百分比?我的猜测是,符号的数量代表相对的变化量 - 但相对于什么?当前档案?整个合并?

  • 怎么计算?是否有任何官方关于这个源?我现在对此最准确的答案是"这种表现形式不是很精确"......我只是好奇

git diff

37
推荐指数
1
解决办法
9554
查看次数

has_many关联上有"first_or_build"方法吗?

在rails 3.2+中,您可以这样做:

SomeModel.some_scope.first_or_initialize
Run Code Online (Sandbox Code Playgroud)

这意味着您还可以:

OtherModel.some_models.first_or_initialize
Run Code Online (Sandbox Code Playgroud)

我觉得这是非常有用的,但我希望有一个first_or_build对我的方法has_many的关联,这将像first_or_initialize,但还添加了一个新的纪录协会为build在需要的时候做.

更新澄清:是的,我知道first_or_initializefirst_or_create.事情是,first_or_initialize不会将初始化记录添加到关联的目标build中,并且first_or_create......好吧...... 创建一个记录,这不是意图.

我有一个有效的解决方案,使用关联扩展:

class OtherModel < ActiveRecord::Base

  has_many :some_models do 
    def first_or_build( attributes = {}, options = {}, &block )
      object = first_or_initialize( attributes, options, &block )
      proxy_association.add_to_target( object ) if object.new_record?
      object
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

我只是想知道:

  • 这个问题的内置解决方案已经存在?
  • 我的实施有缺点,我没有看到?

activerecord ruby-on-rails associations

32
推荐指数
1
解决办法
8688
查看次数

HTTP状态422是否适用于未通过唯一性验证的记录?

我已经做了很多次(看到很多人这样做了),但我开始怀疑它是否合适:

if @record.save
  # status 200
else
  # failure of validations => status 422
end
Run Code Online (Sandbox Code Playgroud)

现在我看到这422 unprocessable entity意味着请求格式正确,但在语义上并不正确.据我了解,验证错误可能不是语义错误.

注意:我在谈论唯一性验证,因此我不确定这是否属于用户错误,如此问题:REST API服务为验证失败返回的适当HTTP状态代码是什么?

总结一下:我应该停止使用状态422吗?如果是这样,我应该使用什么呢?

ruby-on-rails http-status-codes

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

使用JQuery上传器的Rails载波

我在这个rails教程中使用Rails Carrier Wave和JQuery上传,但是当我点击上传按钮时出现错误:

Error: SyntaxError: JSON.parse
Run Code Online (Sandbox Code Playgroud)

任何建议/建议都很受欢迎.

jquery json ruby-on-rails carrierwave

9
推荐指数
1
解决办法
8182
查看次数

Ruby:如何防止通过属性读取器修改数组实例变量

对不起这个菜鸟问题...让我们说:

class TestMe
 attr_reader :array

 def initialize
   @array = (1..10).to_a
 end
Run Code Online (Sandbox Code Playgroud)

结束

然后可以这样做:

>> a = TestMe.new
=> #<TestMe:0x00000005567228 @x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>
>> a.array.map! &:to_s
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
>> a.array
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
Run Code Online (Sandbox Code Playgroud)
  • 这明显违背了封装,不是吗?
  • 有没有办法快速保护数组变量不被改变?
  • ...或者每当我的实例变量具有"破坏性"方法时,我是否需要实现深拷贝读取器?

编辑我在某处读到暴露数组实例变量是"坏OO".如果这是真的,为什么?

ruby arrays getter encapsulation instance-variables

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

ActiveRecord :: Relation#bind的目的是什么?

出于好奇 - 我正在阅读Relation :: QueryMethods模块的文档,并发现该方法:

def bind(value)
  relation = clone
  relation.bind_values += [value]
  relation
end
Run Code Online (Sandbox Code Playgroud)

有谁知道这是什么?我试图自己找,但失败了.

UPDATE

我追踪@bind_values到无底深度的使用ActiveRecord::ConnectionAdapters- 值传递一直持续到低级SQL语句执行.似乎各个适配器可能会使用这些.我的猜测是,它与准备好的陈述有关SELECT * FROM 'table' WHERE 'field' = ?,但我被困在这里.任何人?

ruby-on-rails relation rails-activerecord

7
推荐指数
1
解决办法
2452
查看次数

rake db:create failed,postgresql 8.4的身份验证问题

首先,请原谅我的完全noobness.我真的试图找到一个解决方案,但现在我陷入困境,完全无能为力.

我正在尝试在远程服务器上部署rails 3应用程序; 在我的本地VM上开发时,没有问题显示.但现在,当我试图跑

rake db:create
Run Code Online (Sandbox Code Playgroud)

它失败了,有错误(这里翻译,因为我是法国人):

FATAL : password authentication failed for user <<mylogin>>
Run Code Online (Sandbox Code Playgroud)

这是我的database.yml:

login: &login
  adapter: postgresql
  username: mylogin
  password: mypassword
  host: localhost
  port: 5432
  encoding: UTF8

development:
  <<: *login
  database: somesite_development

test:
  <<: *login
  database: somesite_test

production:
  <<: *login
  database: somesite_production
Run Code Online (Sandbox Code Playgroud)

使用命令行工具"createuser"在postgre-side创建了用户"mylogin".它被授权创建dbs.postgresql.conf配置服务器监听localhost.我用pg_hba.conf尝试了很多东西,没有用 - 无论在127.0.0.1上用户"mylogin"使用的方法(ident,密码,md5),身份验证都失败了 - 尽管我从未遇到过连接/创建dbs的问题PSQL.

任何线索?

编辑:好的,发现我是多么令人难以置信的愚蠢...我的用户的密码根本没有设置!我想我忘记了分号了

ALTER USER xxxx WITH PASSWORD xxxx;

...我通过请求"SELECT*FROM pg_shadow;"看到了这一点. - 密码字段为空.因为这个愚蠢的错误,我浪费了三天的生命......

authentication rake ruby-on-rails rails-postgresql

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

OpenLayers:解析的GeoJSON点始终显示在coords(0,0)

这是我第一次使用OpenLayers而且我不明白我做错了什么.

我尝试显示一个从GeoJSON解析的简单点.数据似乎正确解析(我用控制台检查)但无论我给出什么点,它总是显示在我猜测我的矢量图层上的LonLat(0,0)的位置.

我究竟做错了什么 ?

var map, baseLayer, placesLayer, geojsonParser ;
// data below have been simplified and reformated to enhance readability
var geojsonData = 
{
    "type":"Feature",
     "geometry":
     {
        "type":"Point",
        "coordinates":[-4.0280599594116,5.3411102294922]
     },
     "properties":
     {
        "id":273,
        "name":"ABIDJAN"
     }
};

$(document).ready(function(){

map = new OpenLayers.Map('map');
  baseLayer = new OpenLayers.Layer.OSM();
  placesLayer = new OpenLayers.Layer.Vector();

  geojsonParser = new OpenLayers.Format.GeoJSON();
  placesLayer.addFeatures(geojsonParser.read(geojsonData));

  map.addLayers([baseLayer,placesLayer]);
  map.setCenter(
    new OpenLayers.LonLat(-4, 5.3).transform(
      new OpenLayers.Projection("EPSG:4326"),
      map.getProjectionObject()
    ), 5
  );

}); // document ready

point vector openlayers coordinates geojson

4
推荐指数
1
解决办法
7584
查看次数