Rails - HABTM的问题

时间:2010-07-28 15:44:30

标签: ruby-on-rails

我有两种模式:

ItemType和PropertyType,它们与HABTM关系连接。

但是这段代码不起作用:

PropertyType.find(:all, :conditions => ["item_type_id != ?", existing_type_id])

我有错误:

Mysql::Error: Unknown column 'item_type_id' in 'where clause': SELECT * FROM `property_types` WHERE (item_type_id != '3')

如何解决这个问题?我想找到所有PropertyTypes,其中item_type_id!=“some_id”

2 个答案:

答案 0 :(得分:1)

我从你的描述中假设了以下内容。

class ItemType
  has_and_belongs_to_many :property_types
end

class PropertyType
  has_and_belongs_to_many :item_types
end

create_table :item_types_property_types, :id => false do |t|
  t.references :item_type, :property_type
end

然后您的查询将如下所示:

PropertyType.find(:all, :include => :item_types, :conditions => ["item_types_property_types.item_type_id != ?", existing_type_id])

答案 1 :(得分:0)

您的property_types表上似乎缺少该列。您是否在创建模型后编写/运行迁移脚本?模型不知道任何内容或控制数据库中的任何内容,包括其模式。

ruby script/generate model会自动为您创建基本迁移,但您可能需要将其充实并使用rake db:migrate

运行它