Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. class User < ActiveRecord::Base
  2. belongs_to :account
  3. devise :database_authenticatable, :registerable,
  4. :recoverable, :rememberable, :trackable, :validatable,
  5. :confirmable, :lockable, :timeoutable
  6. attr_accessible :email, :password, :password_confirmation, :remember_me
  7. end
  8.  
  9. class Account < ActiveRecord::Base
  10. has_many :users, :dependent => :destroy
  11. attr_accessible :name, :account_type
  12. end
  13.  
  14. class Account < ActiveRecord::Base
  15. has_many :users, :inverse_of => :account, :dependent => :destroy
  16. accepts_nested_attributes_for :users
  17. attr_accessible :name, :users_attributes
  18. end
  19.  
  20. class User < ActiveRecord::Base
  21. belongs_to :account, :inverse_of => :users
  22. validates :account, :presence => true
  23. devise :database_authenticatable, :registerable,
  24. :recoverable, :rememberable, :trackable, :validatable,
  25. :confirmable, :lockable, :timeoutable
  26. attr_accessible :email, :password, :password_confirmation, :remember_me
  27. end
  28.  
  29. it "should create account AND user through accepts_nested_attributes_for" do
  30. @AccountWithUser = { :name => "Test Account with User",
  31. :users_attributes => [ { :email => "user@example.com",
  32. :password => "testpass",
  33. :password_confirmation => "testpass" } ] }
  34. au = Account.create!(@AccountWithUser)
  35. au.id.should_not be_nil
  36. au.users[0].id.should_not be_nil
  37. au.users[0].account.should == au
  38. au.users[0].account_id.should == au.id
  39. end
  40.  
  41. resources :accounts, :only => [:index, :new, :create, :destroy]
  42.  
  43. class AccountsController < ApplicationController
  44.  
  45. def new
  46. @account = Account.new
  47. @account.users.build # build a blank user or the child form won't display
  48. end
  49.  
  50. def create
  51. @account = Account.new(params[:account])
  52. if @account.save
  53. flash[:success] = "Account created"
  54. redirect_to accounts_path
  55. else
  56. render 'new'
  57. end
  58. end
  59.  
  60. end
  61.  
  62. <h2>Create Account</h2>
  63.  
  64. <%= form_for(@account) do |f| %>
  65. <%= render 'shared/error_messages', :object => f.object %>
  66. <div class="field">
  67. <%= f.label :name %><br />
  68. <%= f.text_field :name %>
  69. </div>
  70.  
  71. <%= f.fields_for :users do |user_form| %>
  72. <div class="field"><%= user_form.label :email %><br />
  73. <%= user_form.email_field :email %></div>
  74. <div class="field"><%= user_form.label :password %><br />
  75. <%= user_form.password_field :password %></div>
  76. <div class="field"><%= user_form.label :password_confirmation %><br />
  77. <%= user_form.password_field :password_confirmation %></div>
  78. <% end %>
  79.  
  80. <div class="actions">
  81. <%= f.submit "Create account" %>
  82. </div>
  83. <% end %>
  84.  
  85. <%= f.fields_for :account do |account_form| %>
  86. <div>
  87. <p>
  88. <%= account_form.label :name, "Account Name", :class => "label" %>
  89. <%= account_form.text_field :name, :class => "text_field" %>
  90. <span class="description">(e.g., enter your account name here)</span>
  91. </p>
  92. </div>
  93.  
  94. <div>
  95. <p>
  96. <%= account_form.label :company, "Company Name", :class => "label" %>
  97. <%= account_form.text_field :company, :class => "text_field" %>
  98. </p>
  99. </div>
  100. <% end %>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement