You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
class Group < ActiveRecord::Base
attr_accessible :name
has_many :users, dependent: :destroy
end
app/models/user.rb
class User < ActiveRecord::Base
attr_accessible :name
belongs_to :group
end
Routing
config/routes.rb
resources :groups do
resources :users
end
Controllers
app/controllers/users_controller.rb
class UsersController < ApplicationController
def new
@group = Group.find(params[:group_id])
end
def create
@group = Group.find(params[:group_id])
@user = @group.users.build(params[:user])
if @user.save
flash[:success] = "User was created."
redirect_to @group
else
render 'new'
end
end
end
FactoryGirl.define do
factory :user do
name "User example"
group
end
factory :group do
name "Group example"
end
end
spec/requests/user_pages_spec.rb
require 'spec_helper'
describe "UserPages" do
let(:group) { FactoryGirl.create(:group) }
subject { page }
describe "create page" do
before { visit new_group_user_path(group) }
describe "with invalid information" do
before { click_button "Create User" }
describe "after submission" do
it { should have_content("error") }
end
end
describe "with valid information" do
before { fill_in "user_name", with: "Lorem ipsum" }
it "should create a user" do
expect { click_button "Create User" }.to change(User, :count).by(1)
end
end
end
end