【发布时间】:2011-09-28 12:38:59
【问题描述】:
首先,我有 3 个模型:
Location has_many :products
User has_many :products
Products belongs_to :user, :location
现在我有一个嵌套表单:
<%= nested_form_for @location do |f| %>
<%= f.error_messages %>
.............
<% f.fields_for :products do |product| %>
我试图找到让我的 current_user 关联正常工作的正确方法,但突然间,我在这个问题中找到了正确答案,Nil foreign key in a nested form。
我把这段简单的代码放在我的控制器中,它最终把我的产品给了当前的user_id:
@location.products.first.user = current_user
满 -
def create
@location = Location.new(params[:location])
@location.products.first.user = current_user
end
我的最终目标已经完成。用户在特定位置创建了自己的产品。我唯一不明白的是为什么first.user = current_user 可以工作,而像location = @location.current_user.products.build 这样简单的东西却不行。有人可以给我一个很好的解释,说明这里发生了什么以及前者的含义吗?这是可以拥有的还是他们更安全/更好的方式?
谢谢你,我很感激。
【问题讨论】:
标签: ruby-on-rails ruby devise nested-forms