Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将某些东西转换为Ruby进程?_Ruby_Ruby On Rails 3_Foreach - Fatal编程技术网

如何将某些东西转换为Ruby进程?

如何将某些东西转换为Ruby进程?,ruby,ruby-on-rails-3,foreach,Ruby,Ruby On Rails 3,Foreach,我有这两个if-else块,我认为它们作为Proc更好,但我仍然在思考Proc是什么。这只是一段我想经常调用的代码,放在一个地方,这样我只需要在那个地方更新它。它不是一个对象本身的方法,只是一些重复的代码 那么上面的语法是什么 您没有看到的代码(其中设置了“j”)是数据库游标上的.each循环 所以Job.where(东西)。每个人都做| j | 等等。制作过程的语法只是: if j.job_type_name j.type = j.job_type_name elsif j.type.le

我有这两个if-else块,我认为它们作为Proc更好,但我仍然在思考Proc是什么。这只是一段我想经常调用的代码,放在一个地方,这样我只需要在那个地方更新它。它不是一个对象本身的方法,只是一些重复的代码

那么上面的语法是什么

您没有看到的代码(其中设置了“j”)是数据库游标上的.each循环

所以
Job.where(东西)。每个人都做| j |


等等。

制作过程的语法只是:

if j.job_type_name
  j.type = j.job_type_name
elsif j.type.length > 1
  # jty = Jobtype.find_by_id(j.type)
  # We don't want to relentlessly hit the db for JobTypes, Colors, Priorities, etc. so we use the stored 'all' variable
  jty = allJobTypes.find { |h| h['_id'] == BSON::ObjectId(j.type) }
  j.type = jty && jty.job_type ? jty.job_type : 'N/A'
end

if j.priority_name
  j.priority = j.priority_name
elsif j.priority
  pri = Jobpriority.find_by_id(j.priority)
  j.priority = !pri.blank? && !pri.job_priority.blank? ? pri.job_priority : 'N/A'
end
如果需要,也可以使用
Proc.new
而不是
Proc

您应该能够生成一个proc,然后将其作为块传递给.each(但我不知道这会给您带来什么):


制作proc的语法如下所示:

if j.job_type_name
  j.type = j.job_type_name
elsif j.type.length > 1
  # jty = Jobtype.find_by_id(j.type)
  # We don't want to relentlessly hit the db for JobTypes, Colors, Priorities, etc. so we use the stored 'all' variable
  jty = allJobTypes.find { |h| h['_id'] == BSON::ObjectId(j.type) }
  j.type = jty && jty.job_type ? jty.job_type : 'N/A'
end

if j.priority_name
  j.priority = j.priority_name
elsif j.priority
  pri = Jobpriority.find_by_id(j.priority)
  j.priority = !pri.blank? && !pri.job_priority.blank? ? pri.job_priority : 'N/A'
end
如果需要,也可以使用
Proc.new
而不是
Proc

您应该能够生成一个proc,然后将其作为块传递给.each(但我不知道这会给您带来什么):


制作proc的语法如下所示:

if j.job_type_name
  j.type = j.job_type_name
elsif j.type.length > 1
  # jty = Jobtype.find_by_id(j.type)
  # We don't want to relentlessly hit the db for JobTypes, Colors, Priorities, etc. so we use the stored 'all' variable
  jty = allJobTypes.find { |h| h['_id'] == BSON::ObjectId(j.type) }
  j.type = jty && jty.job_type ? jty.job_type : 'N/A'
end

if j.priority_name
  j.priority = j.priority_name
elsif j.priority
  pri = Jobpriority.find_by_id(j.priority)
  j.priority = !pri.blank? && !pri.job_priority.blank? ? pri.job_priority : 'N/A'
end
如果需要,也可以使用
Proc.new
而不是
Proc

您应该能够生成一个proc,然后将其作为块传递给.each(但我不知道这会给您带来什么):


制作proc的语法如下所示:

if j.job_type_name
  j.type = j.job_type_name
elsif j.type.length > 1
  # jty = Jobtype.find_by_id(j.type)
  # We don't want to relentlessly hit the db for JobTypes, Colors, Priorities, etc. so we use the stored 'all' variable
  jty = allJobTypes.find { |h| h['_id'] == BSON::ObjectId(j.type) }
  j.type = jty && jty.job_type ? jty.job_type : 'N/A'
end

if j.priority_name
  j.priority = j.priority_name
elsif j.priority
  pri = Jobpriority.find_by_id(j.priority)
  j.priority = !pri.blank? && !pri.job_priority.blank? ? pri.job_priority : 'N/A'
end
如果需要,也可以使用
Proc.new
而不是
Proc

您应该能够生成一个proc,然后将其作为块传递给.each(但我不知道这会给您带来什么):



为什么您认为PROC适合这种情况?与普通方法相比,我认为使用
Proc
会使代码不那么清晰。此外,当您实际使用便携式
Proc
lambda
时,还有一些非常特殊的情况。大多数情况下,您只需在适当的位置使用块。这是一件非常小的事情,与您的问题无关:通常您可以通过最小化
的使用来提高可读性并添加括号(无论是否需要)。例如,您可以将倒数第二行更改为
j.priority=(pri.blank?| | pri.job_priority.blank?)不适用:优先作业优先权
。为什么您认为程序适合这种情况?与普通方法相比,我认为使用
Proc
会使代码不那么清晰。此外,当您实际使用便携式
Proc
lambda
时,还有一些非常特殊的情况。大多数情况下,您只需在适当的位置使用块。这是一件非常小的事情,与您的问题无关:通常您可以通过最小化
的使用来提高可读性并添加括号(无论是否需要)。例如,您可以将倒数第二行更改为
j.priority=(pri.blank?| | pri.job_priority.blank?)不适用:优先作业优先权
。为什么您认为程序适合这种情况?与普通方法相比,我认为使用
Proc
会使代码不那么清晰。此外,当您实际使用便携式
Proc
lambda
时,还有一些非常特殊的情况。大多数情况下,您只需在适当的位置使用块。这是一件非常小的事情,与您的问题无关:通常您可以通过最小化
的使用来提高可读性并添加括号(无论是否需要)。例如,您可以将倒数第二行更改为
j.priority=(pri.blank?| | pri.job_priority.blank?)不适用:优先作业优先权
。为什么您认为程序适合这种情况?与普通方法相比,我认为使用
Proc
会使代码不那么清晰。此外,当您实际使用便携式
Proc
lambda
时,还有一些非常特殊的情况。大多数情况下,您只需在适当的位置使用块。这是一件非常小的事情,与您的问题无关:通常您可以通过最小化
的使用来提高可读性并添加括号(无论是否需要)。例如,您可以将倒数第二行更改为
j.priority=(pri.blank?| | pri.job_priority.blank?)不适用:pri.job\u priority
。答案是正确的,但我同意作者的观点:它似乎没有那么有用。是的,我不明白为什么需要一个过程;我认为有一种方法就可以了。我们可以定义一个方法,将作业作为参数并对其进行处理。答案是正确的,但我同意作者的观点:它似乎没有那么有用。是的,我不明白为什么需要proc;我认为有一种方法就可以了。我们可以定义一个方法,将作业作为参数并对其进行处理。答案是正确的,但我同意作者的观点:它似乎没有那么有用。是的,我不明白为什么需要proc;我认为有一种方法就可以了。我们可以定义一个方法,将作业作为参数并对其进行处理。答案是正确的,但我同意作者的观点:它似乎没有那么有用。是的,我不明白为什么需要proc;我认为有一种方法就可以了。可以定义一个方法,将作业作为参数并对其进行处理。