小编Noz*_*Noz的帖子

Rails 3 after_save旧值

您如何使用正在更新的记录的旧值?

例如,在以下代码块中,在确定它确实已更改后,如何使用先前的winner_id字段运行查询?

if self.winner_id_changed?
   old_value = self.changed_attributes
   User.find(old_value)
   #do stuff with the old winner....
end
Run Code Online (Sandbox Code Playgroud)

输出的示例self.changed_attributes将是:

{ "winner_id"=> 6}

我是否真的必须将其转换为字符串并解析该值才能对其执行查询?old_value[:winner_id]好像什么也没做.

activerecord ruby-on-rails-3

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

Rails 3 Dynamic Escaped Query错误的绑定变量数

我有一个表,用户可以使用许多不同类型的组合以各种方式进行过滤.有了我从用户那里得到的所有输入数据,我从SQL中逃脱用户数据非常重要,这导致了我现在遇到的问题.我有两个基于发送到动作的参数动态构建的数组,一个数组包含SQL子句,另一个数组包含要与其相应的caluse配对的值......例如......

def results

  sql_clauses = Array.new
  sql_args = Array.new

  unless params[:elapsed_time].nil?
    sql_clauses << "elapsed_time = ?"
    sql_args << params[:elaped_time] 
  end
  unless params[:age_greater_than].nil?
    sql_clauses << "age > ?"
    sql_args << params[:age_greater_than]
  end
  .....
  @results = Model.where(sql_clauses.join(" and "), sql_args.join(", "))

end
Run Code Online (Sandbox Code Playgroud)

现在这将sql_clauses数组发送到where方法没问题.但它在第二个参数上爆炸,因为它返回一个字符串,并且它期望各个变量与每个"?"相对应.出现在sql_clauses数组中的字段.我已经尝试过KandadaBoggu提供的关于Comine条件数组的解决方案.这两个选项都不适合我,但可能是因为我使用2个数组而不是1个.

有人知道我的问题的解决方案吗?

arrays dynamic ruby-on-rails-3

0
推荐指数
1
解决办法
1066
查看次数

JQuery - SyntaxError:保留字"this"无法分配

我正在尝试在JQuery中循环变量并重新分配this以下Coffeescript中的值.

$.each data.rows, ->
  completion_time = [this[0], new Date(new Date('Jan 01 2000').getTime() +  this[1])]
  this = completion_time
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下错误消息:

SyntaxError:无法分配保留字"this"

在每次迭代中,值this看起来像这样:

["abc123",12302103,1230132,1230123]

我要做的是将其重新分配给以下值:

["abc123",12302103]

我也尝试过分配this.value,没有骰子.有什么建议?

javascript jquery coffeescript

0
推荐指数
1
解决办法
444
查看次数

Ruby将可枚举数组展平为多个子阵列?

我有以下代码:

>[['string', 'User'], Foo.all.map {|c| ["number", c.name]}, ['number', 'Average Time']]
=> [["string", "User"], [["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"]], ["datetime", "Average Time"]]
Run Code Online (Sandbox Code Playgroud)

我想做的是将传递的Foo可枚举数组简化为:

=> [["string", "User"], ["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"], ["datetime", "Average Time"]]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但是它没有做我想要的事情:

>[['string', 'User'], Foo.all.map {|c| ["number", c.name]}.flatten, ['number', 'Average Time']]
=> [["string", "User"], ["number", "Bar1", "number", "Bar2", "number", "Bar3"], ["datetime", "Average Time"]]
Run Code Online (Sandbox Code Playgroud)

请注意,在测试时,您可以使用示例输出演示替换Fool.all.map部件[["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"]].

ruby arrays enumerable

0
推荐指数
1
解决办法
598
查看次数