0
我的應用程序中的註冊表單允許用戶創建一個帳戶 - 它也創建他們的用戶記錄和accounts_users(has_many:through)記錄。一旦他們點擊提交,我打電話給'setup_account'方法爲用戶的新帳戶輸入幾個默認值。這就是說,該方法接近工作,但爲手動賦值的三個記錄輸入了不正確的值(即:user_id => @user或:account_id => @account)。 account_id和user_id的錯誤值總是爲1.有沒有人知道爲什麼這不起作用?Rails交易不輸入正確的數據
這裏是我的帳號模式:
def self.setup_account(p)
Account.transaction do
@account = Account.new(p)
@account.save!
@user = @account.users.first
@user.create_profile!
@group = @account.groups.create!(:user_id => @user.id, :name => 'Default')
@group.members.create!(:account_id => @account.id, :user_id => @user.id)
Role.all.each do |role|
@account.roles_users.create!(:user_id => @user.id, :role_id => role.id)
end
end
return @account
end
這裏是我的AccountsController:
def new
@account = Account.new
@user = @account.users.build()
@account.accounts_users.build()
respond_to do |format|
format.html # new.html.erb
format.json { render json: @account }
end
end
def create
@account = Account.setup_account(params[:account])
respond_to do |format|
if [email protected]?
flash[:domain] = @account.subdomain
format.html { redirect_to thanks_url }
format.json { render json: @account, status: :created, location: @account }
else
format.html { render action: "new" }
format.json { render json: @account.errors, status: :unprocessable_entity }
end
end
end
我的模型協會是:
- 帳戶(的has_many:用戶;:通過account_users; has_many:accounts_users; has_many:groups; has_many:members; has_many:roles_users)
- 用戶(has_one:profile; has_many:accounts_users; has_many:accounts,:through =>:accounts_users; has_many:成員; has_many:groups; has_many:roles_users;的has_many:角色:通過=>:roles_users)
- Accounts_User(belongs_to的:帳戶; belongs_to的:用戶)
- 組(的has_many:成員爲:會員資格; belongs_to的:用戶; belongs_to的:帳戶)
- 會員( belongs_to的:會員資格,多態=>真; belongs_to的:帳戶; belongs_to的:用戶)
- 資料(belongs_to的:用戶)
- 角色(的has_many:roles_users;的has_many:用戶:通過=>:roles_users;的has_many:賬戶, :through =>:roles_users)
- RolesUser(belongs_to:user; belongs_to:account; belongs_to:role)
編輯:編輯setup_account方法並創建操作。
您的原始建議讓我走上了路,但這不是我需要的一切。經過一番搗鼓之後,我得到了它的工作。您可以在我上面編輯的文章中看到工作方法/操作。謝謝你的幫助。 – hugo 2012-08-03 15:11:51
您可以再次編輯,以便在代碼語法中正確格式化該方法嗎? – 2012-08-03 15:25:22
剛做了編輯。對於那個很抱歉。 – hugo 2012-08-03 15:39:39