【问题标题】:reference form rails参考模板
【发布时间】:2012-12-09 18:11:18
【问题描述】:

我有一个模型艺术家,现在我想创建一个模型 user_artist,它应该保存当前登录的用户和对艺术家的引用。我采用一个新模型,因为该数据库中可能有多个用户用于一位艺术家。 现在我有了模型,在用户创建新艺术家期间如何保存当前用户。

这是我目前的表格:

<%= form_for @artist do |f| %>
  <%= f.label :name, "Name" %>
  <%= f.submit "Create" %>
<% end -%>

我必须如何更改才能同时将用户保存在数据库 user_artist 中?

【问题讨论】:

    标签: ruby-on-rails model-view-controller reference model controller


    【解决方案1】:

    如果你想保存当前登录的用户,你可以编辑你的控制器,所以,在保存艺术家之后,你可以保存 UserArtist,例如这样的

    def create
       @artist = Artist.new(params[:artist])
       if @artist.save
           @user_artist = UserArtist.new(:artist_id => @artist.id, :user_id => current_user.id)
           if @user_artist.save
              #code...
           else
              #errors...
           end
       else
           #errors...
       end
    end
    

    (有一种我从未尝试过的更简单的方法;我会搜索并展示给您,但如果有人知道请告诉我们)

    另外,我没有告诉你创建回调,因为在模型中你不能访问会话变量(我只记得它)

    将来,如果您想在一个表单上添加更多的 UserArtist,请查看 http://railscasts.com/episodes/196-nested-model-form-part-1http://railscasts.com/episodes/197-nested-model-form-part-2

    更新

    这是我之前告诉过你的方式(它会保存两条记录):

    @artist = Artist.new(params[:artist])
    @artist.user_artists.new(:user_id => current_user.id)
    if @artist.save
       #code
    else
       #errors
    end
    

    另外,我发现了这个有趣的条目:Save changes to a has_many association ONLY when you successfully save the parent object?

    【讨论】:

    • 谢谢!以及如何获得所有 user_artists?我有这个代码: User_artist.where("artist_id = ?", params[:id]) 但是我如何获得 User 模型?
    • 由于关系,您可以执行@artist = Artist.find(params[:id])@user_artists = @artist.user_artists 之类的操作。你之前没有提到User 模型。
    猜你喜欢
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多