Rails如何选择数组上的id?

时间:2016-11-14 18:24:55

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我有 模特颜色

int main( void )
{
  func1( 1 );
  func2( func1, func1(2) );
}

模型产品

has_many :colorships
has_many :products, :through => :colorships

在产品控制器上,我想选择一种颜色

 has_many :colorships
 has_many :colors, through: :colorships

1 个答案:

答案 0 :(得分:0)

问题是你使用的是has_many,它总会返回一个数组。你做错了一些事。

不要product.color_ids.nil?,因为它永远不会是零,你想要product.colors.empty?,因为空数组不是零,它是空的。

此行current_user.find_by_color_id(product.color_ids.nil? ? nil : product.color_ids.color.id)永远不会有效。 current_user是获取current_user对象的Devise方法,因此向其添加find会引发错误。

同样product.color_ids.color.id也无法正常工作。我不确定你在这里尝试做什么,但product.colorsproduct.color_ids都将返回一个数组。如果您想要第一个ID,则可以product.colors.first.idproduct.color_ids.first

看起来你离家很远,对不起。我很乐意提供更多帮助,但我需要更多信息,我需要用户模型并了解您尝试使用current_user.find_by_color_id(product.color_ids.nil? ? nil : product.color_ids.color.id)进行的操作。