我正在尝试创建一个活动流,因此我的模型看起来像
class CreateFeeds < ActiveRecord::Migration
def change
create_table :feeds do |t|
t.integer :item_id
t.string :item_type
t.integer :user_id
t.timestamps
end
end
end
class Feed < ActiveRecord::Base
belongs_to :user
belongs_to :item, polymorphic: true
end
我已将此添加到我的帖子控制器
feed_item @post
这是我的应用程序控制器
def feed_item(item, action = params[:action])
current_user.feeds.create! action: action, item: item
end
我正在显示我的帖子内容,如
= feed.item.text
我的问题是我打电话时
= link_to "delete", feed.item, method: :delete
我删除了Feed项,但该项目的引用仍保留在数据库中,我得到了
错误:缺少模板“删除”
除非我添加,如果存在?
我如何引用某个项?
答案 0 :(得分:0)
您的代码只是删除该项,而不会影响Feed。我想你需要:
item_type
中的item_id
和feed
引用(例如,在Feed控制器和模型中实施remove_item
方法)或belongs_to
关联更改为has_one
关联,并对数据库进行相应更改。在这种情况下,删除该项目不需要对关联的Feed进行任何更改。另外,使用模型定义保持迁移是不常见的。迁移应该在一个单独的文件中。