【发布时间】:2017-03-18 22:58:15
【问题描述】:
我像这样创建了一个连接表:
class CreateJoinTablePurchaseUser < ActiveRecord::Migration[5.0]
def change
create_join_table :purchases, :users, table_name: :participation_requests do |t|
# t.index [:purchase_id, :user_id]
# t.index [:user_id, :purchase_id]
t.boolean :approved, default: false
end
end
这是我的模型:
class ParticipationRequest < ApplicationRecord
end
我在表格中成功创建了一行。但是,当我尝试像这样更新布尔值时:
pr = ParticipationRequest.find_by(user_id: 1, purchase_id: 1)
pr.update_attributes(approved: true)
pr 返回该行,我在更新时收到 ROLLBACK 并显示以下消息:
TypeError: nil is not a symbol nor a string
我认识到连接表与我的其他表不同,因为它不像我的常规表那样被索引。主键似乎是 user_id 和 purchase_id 的组合。在我的任何其他表上使用 update_attributes 都没有问题。这个连接表有什么不同之处,不允许我以这种方式更新属性吗?
【问题讨论】:
标签: ruby-on-rails rails-activerecord ruby-on-rails-5