2013-05-06 98 views
0

我試圖發送對象(用戶)NotificationsMailer這樣的:使用pry發送對象?

pry(main)>NotificationsMailer.welcome_facebook_user({:password=>'123',:email=>'[email protected]',:basic_profile=>{:name=>'Samir'}}).deliver 

但我得到這個錯誤:

ActionView::Template::Error: undefined method `basic_profile' for #<Hash:0x0000000786d588> 
from /app/app/views/notifications_mailer/welcome_facebook_user.html.haml:2:in `block in _app_views_notifications_mailer_welcome_facebook_user_html_haml__4104442834642741128_62933320' 

NotificationsMailer.welcome_facebook_user:

def welcome_facebook_user(user) 
    @user = user 
    puts "SENT welcome_facebook_user TO:" 
    puts user[:email] 
    mail(:to=>user[:email], :subject => "Welcome!") 
    end 

我的模板:

=content_for :title do 
    Welcome, #{@user.basic_profile.name unless @user.basic_profile.nil?} 

在現實世界中:

User.rb

class User < Refinery::Core::BaseModel 
has_one :basic_profile 

不過,我想用撬測試它,如何發送這樣的用戶對象?爲什麼我的嘗試失敗?

回答

0

您正在使用的哈希值,但你應該使用對象來創建對象(我假設大衆賦值是關閉的默認情況下)這樣做:

basic_profile = BasicProfile.new 
basic_profile.name = 'Samir' 
user = User.new 
user.password = '123' 
user.email = '[email protected]' 
user.basic_profile = basic_profile 
NotificationsMailer.welcome_facebook_user(user).deliver 

或轉批量分配和做

NotificationsMailer.welcome_facebook_user(User.new({:password=>'123',:email=>'[email protected]',:basic_profile=>BasicProfile.new({:name=>'Samir'})})).deliver 
0

試試這個

> @user = User.create!(password: "123", email: "[email protected]") 
> @user.basic_profile.name = "Samir" 
> NotificationsMailer.welcome_facebook_user(@user).deliver