2015-10-11 49 views
1

我試圖創建在控制檯的用戶這樣做:創建nested_attributes使得before_create不行

2.2.1 :012 > u.save! 
    (0.2ms) BEGIN 
    User Exists (0.7ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1 
    SQL (2.1ms) INSERT INTO "users" ("id", "first_name", "last_name", "email", "title", "time_zone", "company_id", "password_digest", "created_at", "updated_at", "activation_digest") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING "id" [["id", 200], ["first_name", "Random"], ["last_name", "Dude"], ["email", "[email protected]"], ["title", "CEO"], ["time_zone", "Stockholm"], ["company_id", 1], ["password_digest", "$2a$10$bHHA/JP5IMrucGUXRWMpsO8sInaouSqn48M.fDHpjGdvedu3Napra"], ["created_at", "2015-10-11 23:09:38.213109"], ["updated_at", "2015-10-11 23:09:38.213109"], ["activation_digest", "$2a$10$WF3bUOtbC1gk4ZnX58cJZO5k7P7YV6wvhmwz7EErTdvIseNuy0oyq"]] 
2.2.1 :013 > u.activation_token 
=> "vKrs0jtvZRiyU-YVE-aPXw" 

現在,當我嘗試創建before_create不起作用用戶,我試圖改變它以before_validation,並沒有工作。

該用戶是來自公司的嵌套屬性,並且在公司#new中創建。

class User < ActiveRecord::Base 
    belongs_to :company 
    attr_accessor :remember_token, :activation_token, :reset_token 
    before_save :downcase_email 
    before_create :create_activation_digest 

現在,當我做@ user.activation_token它返回nil。下面是當我嘗試它的應用程序控制臺日志:

Started POST "/companies" for ::1 at 2015-10-12 01:31:47 +0200 
Processing by CompaniesController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZTEtGR2Dd1FDDYm9j4/SiqSTP646R8gctFx4aJHM9QDP+RQky8SG6gkomLbf+E+LgMi+aah1YOhCkUsg3uSYoQ==", "company"=>{"time_zone"=>"Stockholm", "users_attributes"=>{"0"=>{"first_name"=>"swaga", "last_name"=>"swaga", "email"=>"[email protected]", "password"=>"[FILTERED]"}}, "name"=>"swaga"}, "commit"=>"Create Company"} 
    (0.2ms) BEGIN 
    User Exists (1.3ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1 
    SQL (7.1ms) INSERT INTO "companies" ("name", "time_zone", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "swaga"], ["time_zone", "Stockholm"], ["created_at", "2015-10-11 23:31:47.380530"], ["updated_at", "2015-10-11 23:31:47.380530"]] 
    SQL (0.5ms) INSERT INTO "users" ("first_name", "last_name", "email", "password_digest", "activation_digest", "company_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["first_name", "swaga"], ["last_name", "swaga"], ["email", "[email protected]"], ["password_digest", "$2a$10$3GsPACTg5HPodiqdedsCvu52N64BEE3/fA77p.oBHAhM51zCSzUV."], ["activation_digest", "$2a$10$75y9jP.eZxmWI1KjHZrg3.DuB5GSwiS2UsaQdtV25ClBHDi.z4Pte"], ["company_id", 8], ["created_at", "2015-10-11 23:31:47.390462"], ["updated_at", "2015-10-11 23:31:47.390462"]] 
    (6.7ms) COMMIT 
    User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."company_id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["company_id", 8]] 
    Rendered user_mailer/account_activation.html.erb within layouts/mailer (7.8ms) 

UserMailer#account_activation: processed outbound mail in 29.2ms 
Completed 500 Internal Server Error in 380ms (ActiveRecord: 16.9ms) 

ActionController::UrlGenerationError - No route matches {:action=>"edit", :controller=>"account_activations", :email=>"[email protected]", :id=>nil} missing required keys: [:id]: 

現在我看到返回activation_digest,所以我覺得這個問題是文采只是before_create不工作?這是奇怪,因爲那不應該是能夠創建激活消化爲兩個連接:

# Creates and assigns the activation token and digest. 
def create_activation_digest 
    self.activation_token = User.new_token 
    self.activation_digest = User.digest(activation_token) 
end 
+0

你可以發佈'account_activations_controller.rb'文件嗎?也是相應的視圖文件。 –

+0

另外,請發佈您的'routes.rb'文件。 –

回答

0

你的錯誤說:

ActionController::UrlGenerationError - No route matches {:action=>"edit", :controller=>"account_activations", :email=>"[email protected]", :id=>nil} missing required keys: [:id]: 

好像在您看來,您所呼叫edit_account_activation_path沒有id參數,這就是爲你創建問題。嘗試發送user.id作爲edit_account_activation_path調用中的參數。

事情是這樣的:

edit_account_activation_path(user.email, user.id) 

這應該解決您的問題。

相關問題