アカウントのサインアップフォームを持つレールアプリがあり、アカウントを作成すると同時に管理者ユーザーも作成します。
新しいメソッドのコントローラー コードは単純です。
def new
@account = Account.new
@account.users.build
end
create メソッドでは、2 つのモデルが検証され、次の方法で作成されます。
def create
@account = Account.new(params[:account])
@account.status = "signup"
if @account.save
#find the user
user = User.where("account_id =?", @account.id).first
role = Role.where("rolesymbol =?", "admin").first
@authorization = Authorization.new
@authorization.role_id = role.id
@authorization.user_id = user.id
@authorization.save
else
render action: "new"
end
end
実際には、これはすべてうまく機能します。ただし、rspec コントローラー テストでユーザーをビルドする方法がわかりません。私はの行で物事を試しました
describe "POST 'create'" do
it "should create if all the details are correct" do
account_params = FactoryGirl.attributes_for(:account)
user_params = FactoryGirl.attributes_for(:user)
post :create, :account => account_params, ;user => user_params
end
ただし、これは、コードが示すように、ユーザーをアカウントの一部にするのではなく、2 つのモデルを順番に配置するだけです。
誰かが似たようなことをしましたか?