【问题标题】:Ruby on Rails - HABTM assign after createRuby on Rails - 创建后分配 HABTM
【发布时间】: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


【解决方案1】:

我删除了hidden fields并在保存后添加了这个:

user=current_user
@product.users << user

希望对某人有所帮助。

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多