感谢您的光临。我仍然是连接模型的新手并且有一个问题。我目前有两种型号:
create_table "users", force: true do |t|
t.string "first_name"
t.string "last_name"
t.string "email"
t.string "password_digest"
t.string "user_name"
t.date "birthdate"
t.integer "zip_code"
t.string "gender"
t.datetime "created_at"
t.datetime "updated_at"
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
t.string "background_file_name"
t.string "background_content_type"
t.integer "background_file_size"
t.datetime "background_updated_at"
t.string "slug"
end
create_table "user_avatars", force: true do |t|
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
end
正如你所看到的那样,用户模型变得非常漫长并且有人告诉我,如果我将头像分成单独的模型会更好。我的问题是,如果没有两个单独的Form_for字段,我将如何更改用户个人资料信息?因为我希望用户能够同时编辑user_name,first_name等以及UserAvatar.avatar。感谢所有帮助以及帮助我学习新知识的人。
有关详细信息,请询问
用户模型
has_one :user_avatar
has_attached_file :avatar, :styles => {
:medium => "200x200>",
:small => "120x120#",
:thumb => "75x75#",
:default_url => "http://www.adtechnology.co.uk/images/UGM-default-user.png"
}
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
UserAvatar模型
belongs_to :user
has_attached_file :avatar, :styles => {
:medium => "200x200>",
:small => "120x120#",
:thumb => "75x75#",
:default_url => "http://www.adtechnology.co.uk/images/UGM-default-user.png"
}
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
观看=用户/指数
<%= form_for @user, url: user_path(current_user), html: { method: :put, :multipart => true } do |f| %>
<p class="editpage">Profile Picture: <%= f.file_field :avatar %></p>
<%= f.submit "Upload" %>
<% end %>
答案 0 :(得分:1)
您可以这样使用:
型号:
class User < ActiveRecord::Base
has_one :user_avatar
accepts_nested_attributes_for :user_avatar, allow_destroy: true
end
class UserAvatar < ActiveRecord::Base
belongs_to :user
has_attached_file :avatar, :styles => {
:medium => "200x200>",
:small => "120x120#",
:thumb => "75x75#",
:default_url => "http://www.adtechnology.co.uk/images/UGM-default-user.png"
}
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end
查看:
<%= form_for @user, url: user_path(current_user), html: { method: :put, :multipart => true } do |f| %>
<%= fields_for @user.user_avatar do |user_avatar_form| %>
<p class="editpage">Profile Picture: <%= user_avatar_form.file_field :avatar %></p>
<% end %>
<%= f.submit "Upload" %>
<% end %>
您还可以查看http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for和http://guides.rubyonrails.org/form_helpers.html以获取更多信息。
答案 1 :(得分:0)
我认为你刚刚得知你得到了一些不好的建议。
将它们分开的基础是什么?它使您的代码更加复杂,因此容易出错。
我认为您可以采取的最佳步骤是恢复单一模式。
答案 2 :(得分:0)
最好还原到单个模型,或者如果您使用单独的模型进行头像,则使用fields_for concept watch it