ActiveRecord :: StatementInvalid with SQLite3 :: SQLException:没有这样的列

时间:2016-08-02 18:34:17

标签: ruby-on-rails activerecord sqlite

我试图通过相关模型的值过滤我的模型。 (我试图通过商店过滤我的变种,这是一种产品关联。

class Variant < ActiveRecord::Base
belongs_to :product

def self.by_store_id(store_id)
    where(:product => {:store_id => store_id})
end

### 
class Product < ActiveRecord::Base
belongs_to :store

class Store < ActiveRecord::Base
has_many :products

每次尝试此操作时,都会收到此错误:

  

ActiveRecord :: StatementInvalid(SQLite3 :: SQLException:没有这样的列:   product.store_id:SELECT COUNT(*)FROM&#34; variant_skus&#34;内部联接   &#34;产品&#34; ON&#34;产品&#34;。&#34; id&#34; =&#34; variant_skus&#34;。&#34; product_id&#34;哪里   &#34;产品&#34;&#34; STORE_ID&#34; =?)

为什么我收到此错误? Store_id绝对是我产品表上的一列。

1 个答案:

答案 0 :(得分:1)

该表已定义,但由于它名为products,因此无法找到带有product前缀的列。您可以在方法中使用where('products.store_id = ?', store_id)