我有一個通過User_Accounts模型擁有多個賬戶的用戶。 User_Accounts模型還會跟蹤其他信息,例如管理和結算訪問。通過用戶編輯表單,我希望能夠編輯用戶當前帳戶的管理和帳單布爾字段。Rails 4 - Has_many,使用嵌套表單編輯規範記錄
user.rb
class User < ActiveRecord::Base
has_one :owned_account, class_name: 'Account', foreign_key: 'owner_id'
has_many :user_accounts
has_many :accounts, through: :user_accounts
accepts_nested_attributes_for :user_accounts
end
user_account.rb 類UserAccount <的ActiveRecord ::基地
belongs_to :account
belongs_to :user
end
在用戶控制器,I指定其中USER_ACCOUNT我想要經由嵌套形式編輯和分配給@user_account實例變量。
users_controller.rb
def edit
@user = User.find(params[:id])
@user_account = @user.user_accounts.find_by_account_id(current_account)
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
redirect_to @user, notice: 'User was successfully updated.'
else
render action: "edit"
end
end
private
def user_params
params.require(:user).permit(:name, :email, user_accounts_attributes: [:admin, :billing])
end
用戶/ edit.html.erb
<%= f.fields_for :user_accounts, @user_account do |o| %>
<%= o.check_box :admin, class: 'checkbox' %>
<% end %>
當我提交的變化,它成功地節省了用戶記錄,但不更新USER_ACCOUNT記錄。它似乎通過以下內容:
{"name"=>"Colin 21", "email"=>"[email protected]", "user_accounts_attributes"=>{"0"=>{"admin"=>"1"}}}