【问题标题】:Where condition ActiveRecord Rails 3.1在哪里条件 ActiveRecord Rails 3.1
【发布时间】:2011-11-16 15:06:14
【问题描述】:

我正在从 Rails 3.0.10 切换到 Rails 3.1,现在我的 where 条件遇到了问题:

在我使用之前:

@brand = Brand.first
@search = Product.where(:brand => @brand)

这在 Rails 3.0.10 中运行良好,但更新到 Rails 3.1 时返回相同的代码:

“where 子句”中的未知列“products.brand”

此代码也适用于 Rails 3.1

@brand = Brand.first

@search = Product.where(:brand => @brand)

  @brand = Brand.first
  @search = Product.where(:brand_id => @brand)

谁能解释一下为什么这在 Rails 3.1 中不再起作用?

【问题讨论】:

  • 您的第二个代码 sn-p 与第一个相同?
  • 确实很抱歉,这是我这边的一个错误,我在 rails 3.1 中使用 :brand_id 并且这是有效的。只想知道什么 :brand 不再支持
  • 你不能用@brand.products吗?
  • @SteenhouwerD 这是一个已知的错误,请参阅github.com/rails/rails/issues/1736

标签: mysql ruby-on-rails activerecord where


【解决方案1】:

您需要改用:brand_id

@search = Product.where(:brand_id => @brand)

尽管正如上面 cmets 中提到的@Marian,您可能应该这样做:

@search = @brand.products

【讨论】:

  • 谢谢,但我在 startpost 中犯了一个错误。我编辑了帖子,我在 Rails 3.1 中使用 :brand_id
猜你喜欢
  • 2017-07-02
  • 2011-10-27
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 2011-09-13
  • 1970-01-01
相关资源
最近更新 更多