【发布时间】:2012-05-23 15:34:37
【问题描述】:
我正在使用 rails 3.2.3,在我的 HABTM 关系中分配值时遇到问题。
基本上我有 2 个模型,产品和用户。 当我创建一个新产品时,我想在 Products_Users 中间表中插入插入的值。
它必须是 HABTM,因为我希望将来能够说“用户 x 也可以编辑该产品”,而不仅仅是产品的原始创建者。
我的模型:(为简单起见省略了其他关系)
product.rb
class Product < ActiveRecord::Base
has_and_belongs_to_many :users
accepts_nested_attributes_for :users
attr_accessible <product attributes>, :user_ids, :user_id #it says cant mass assign user_ids so I also added the :user_id, but then it says unknown attribute :user_id
end
user.rb
class User < ActiveRecord::Base
has_and_belongs_to_many :products
attr_accessible :user_id <plus the user attributes>
end
我的产品控制器具有来自脚手架的默认操作和代码。
问题也可能出在我的观点上。我在产品和类别之间也有 HABTM 关系,一切都很好(我从复选框列表中选择类别)
但是如何在已经登录的用户创建新产品后在 Products_Users 表中插入新行?
我试图在表单中使用我的视图:
params[:id]%> #如果产品不是技术上创建的,这里放什么?
current_user.id%>#这个“current_user.id”在其他视图中有效。
这不起作用,也没有什么意义,是否有可能实现我想要做的事情?
感谢您的帮助
【问题讨论】:
-
我无法帮助您,但请永远不要将当前用户放入表单字段。从客户端劫持很容易。
-
嗯,我明白了...但是我怎么知道是哪个用户在创建产品? ://
-
在控制器操作中明确设置它,然后将表单发送到该操作。
标签: ruby-on-rails orm has-and-belongs-to-many