我是 jRuby / Ruby on Rails 的新手,并尝试创建一个网站(学习目的)。
在此Web应用程序中,用户需要注册到系统。成功登录尝试后,他们可以维护自己的仪表板,这是一个简单的电话联系详细信息管理。
我正在使用
jruby 9.0.5.0 (2.2.3)
Rails 4.2.6
Windows 10
MySQL
安装中XAMPP
醇>
问题1
在我的注册中,当我尝试插入新用户时,功能但我没有在我的文本字段中获取值。相反,我在我的表中得到空值。我做错了什么?
这是我的创建User
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.string :password
t.timestamps null: false
end
end
end
这是我的user.rb
型号
class User < ActiveRecord::Base
begin
attr_accessor :name, :email, :password, :password_confirmation
end
validates :name, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true
validates :password, :confirmation => true #password_confirmation attr
validates_length_of :password, :in => 3..20, :on => :create
end
这是我的users_controller.rb
class UsersController < ApplicationController
def login
end
def create
flash[:notice] = ''
@user=User.new(user_params)
if @user.valid?
@user.save
flash[:notice] = "You signed up successfully"
render 'users/login'
else
flash[:error] = "Form is invalid"
render 'users/signup'
end
end
def signup
@user = User.new
flash[:notice]=''
flash[:error]=''
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
这是我的signup.html.erb
<div class = "content">
<h1>Sign Up</h1>
<p>Maecenas nisi nunc, vulputate ac tempus eget, suscipit ut sapien. Aenean fringilla ultricies ultricies.
Mauris aliquet nunc in velit posuere, in convallis purus ullamcorper.
Nam imperdiet lacus lacus, quis finibus diam dapibus a. Nullam quis accumsan libero. </p>
<div class = "form_data">
<%= form_for(:user, :url => {:controller => 'users', :action => 'create'}) do |f| %>
<table>
<tbody>
<tr>
<td> Name : </td>
<td> <%= f.text_field :name %> </td>
</tr>
<tr>
<td> Email : </td>
<td> <%= f.text_field :email %> </td>
</tr>
<tr>
<td> Password : </td>
<td> <%= f.password_field :password %> </td>
</tr>
<tr>
<td> Re-type Password : </td>
<td> <%= f.password_field :password_confirmation %> </td>
</tr>
<tr>
<td> </td>
<td> <%= f.submit :signup %> </td>
</tr>
</tbody>
</table>
<% end %>
</div>
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
<% end %>
</div>
问题2
如何创建contact_details
table (id, name, phonenumber, owner_id)
user_ID
用户表作为foreign key (owner_id)
。
问题3
如何创建良好和整洁的登录算法。赞赏任何教程链接
问题4
如何编辑Jruby/Ruby on rails
中的选择查询,以便我可以根据记录的用户获取详细信息。
答案 0 :(得分:1)
回答1
当您使用attr_accessor
时,它告诉模型您不希望将这些属性保存在数据库中,而只是在应用程序中用作模型属性。删除下面的块,数据应保存正常。
begin
attr_accessor :name, :email, :password, :password_confirmation
end
回答2
阅读此内容的最佳位置是Rails Guides, Active Record Associations。解释几乎没有比这更好。
这里有一个没有勺子喂食你需要做的事情的主旨是:
您需要使用参数生成UserDetail
模型/脚手架。 id, name, phonenumber, user_id
(注意使用user_id。这是外键的rails约定。)
您的模型声明将如下所示,
class User < ActiveRecord::Base
has_one :user_detail
end
class UserDetail < ActiveRecord::Base
belongs_to :user
end
回答3
以下是Ryan Bates如何从头开始创建身份验证的最佳视频。 http://railscasts.com/episodes/250-authentication-from-scratch-revised
回答4
答案3中的视频也会回答这个问题,但基本上当您拥有该身份验证设置时,您可以通过执行操作获取详细信息
current_user.user_detail
<强>更新强>
刚刚意识到我发布的视频链接是专业视频,需要订阅。如果您已经有一个,如果您正在学习rails,我强烈推荐它,您应该能够看到它。如果没有,那里有很多 Authentication from scratch 教程,大部分都是基于该视频。以下任何会做。另外,仅供参考,该网站目前仅收取一个月的订阅费用,以下所有月份正在免费续订(截至撰写本文时)。对于高质量的学习材料来说,这是一个非常好的交易。