从Return语句获取数组,从

时间:2015-05-14 17:01:28

标签: sql ruby-on-rails arrays ruby return

我有一个案例'条件代码片段,其中我返回两个对象。 伪造的代码是 -

case name
when 'a'
object1 = - SQL Logic -
when 'b'
object1 = - SQL Logic -
when 'c'
object2 = - SQL Logic -
when 'd'
object2 = - SQL Logic - 
end
return object1, object2

很明显,我要归还两个物体。但是,在我的控制器中,我一次需要一个对象。该对象以数组的形式返回,如[' value',' nil']。其中一个总是零。 在我的控制器中,我将其中一个对象传递为 -

Model.find_by_sql ["select * from #{object}"]  #either object1 or object2

有什么方法可以中断这个数组并将那个地方所需的对象作为String返回?

感谢。

3 个答案:

答案 0 :(得分:1)

虽然您可以使用compact来消除数组中的nil值,但我不确定您为何首先需要此值。

case name
  when 'a'
    return "SQL statement"
  when 'b'
    return "SQL statement"
  when 'c'
    return "SQL statement"
  when 'd'
    return "SQL statement"
end

更直观。

答案 1 :(得分:0)

return [object1, object2].compact

您可以使用compact方法删除数组的nil值。

答案 2 :(得分:0)

你可以写:

return (['a', 'b'].include?(name) && - SQL Logic 1 -) ||
         (['c', 'd'].include?(name) && - SQL Logic 2 -)

如果它是方法的最后一行,则您不需要return

让我们看看发生了什么。

如果['a', 'b'].include?(name) #=> true,则会返回真正的- SQL Logic 1 -

如果['a', 'b'].include?(name) #=> false,则第一个&&子句为false- SQL Logic 1 -未执行),因此我们考虑另一个||子句。 ['c', 'd'].include?(name)必须为true,因此我们返回- SQL Logic 2 -