我正在设置一个应用程序,用于发布想要/可用/易货的项目。我有两个主要的课程,Post和Item。
每个帖子都包含offers_item,wanted_item或两者。以下是我目前的定义:
class Post < ActiveRecord::Base
has_one :wanted_item, :class_name => 'Item', :dependent => :destroy
has_one :offered_item, :class_name => 'Item', :dependent => :destroy
has_one :location, :dependent => :destroy
end
和
class Item < ActiveRecord::Base
belongs_to :post
attr_accessible :title, :description
end
关于我的问题:我如何构建Items表中的外键,以便我可以判断哪个帖子(以及是否是wanted_item或provided_item)?这是否在迁移文件中完成还是在模特中?
目前的情况是,当我尝试查询时:
Post.find(:first).wanted_item
我得到以下内容:
SQLite3 :: SQLException:没有这样的列:items.post_id:SELECT “items”。* FROM“items”WHERE“items”。“post_id”= 1 LIMIT 1
答案 0 :(得分:2)
您可以为关联设置条件,例如:
has_one :wanted_item, :class_name => 'Item', :conditions => ['kind = ?', 'wanted']
并向kind
添加Item
列(请勿使用“type”,这是保留字)。
编辑:再次阅读你的帖子,你的Item
表似乎缺少外键。在创建Item
表的迁移文件中,只需包含t.references :post
以使rails创建post_id外键列。