Ruby on rails 3.1 rails中的两页注册过程?
我正在尝试创建一个rails应用程序,用户将在其中注册,然后立即被指示使用更详细的信息填写个人资料 我目前正试图通过同时拥有Ruby on rails 3.1 rails中的两页注册过程?,ruby-on-rails-3.1,Ruby On Rails 3.1,我正在尝试创建一个rails应用程序,用户将在其中注册,然后立即被指示使用更详细的信息填写个人资料 我目前正试图通过同时拥有用户和配置文件模型来实现这一点,这两个模型之间有一个/属于关系 我在为用户创建配置文件时遇到问题。测试创建时,使用名为sample\u data的自动配置文件生成器,使用#的未定义方法profiles'测试失败。rake`: namespace :db do desc "Fill database with sample data" task :populate =
用户
和配置文件
模型来实现这一点,这两个模型之间有一个/属于
关系
我在为用户创建配置文件时遇到问题。测试创建时,使用名为sample\u data的自动配置文件生成器,使用#的未定义方法
profiles'测试失败。rake`:
namespace :db do
desc "Fill database with sample data"
task :populate => :environment do
Rake::Task['db:reset'].invoke
admin = User.create!(:name => "name name",
:email => "fakename@fake.com",
:password => "password",
:password_confirmation => "password")
admin.toggle!(:admin)
99.times do |n|
name = Faker::Name.name
email = Faker::Internet.email
password = "password"
User.create!(:name => name,
:email => email,
:password => password,
:password_confirmation => password)
end
User.all.each do |user|
User.profiles.create(:city => Faker::Address.city,
:state => Faker::Address.us_state_abbr,
...
)
end
end
end
也会失败
我在为用户创建配置文件时遇到问题。测试失败,方法“配置文件”未定义。
profiles\u controller.rb
是:
class ProfilesController < ApplicationController
before_filter :authenticate, :only => [:create, :edit]
def create
@profile = current_user.profiles.build(params[:profile])
if @profile.save
flash[:success] = "Profile Created!"
redirect_to root_path
else
render 'pages/home'
end
end
def edit
end
end
有人能看出我做错了什么吗?是否有办法将我需要的所有项目合并到“用户”下,验证是否存在所有必需的信息,以及注册过程是否为两页
对此还有其他建议吗?你为什么这样做?
1.做……结束的次数
你不需要那个
出现故障是因为您需要为某个用户创建一个配置文件,而不是配置文件。
所以试试这个:
User.all.each do |user|
user.create_profile(:city => "bla", ...)
end
在你身上也一样。您只有一个配置文件,使用单数将有所帮助。尝试过。虽然这是一段更简洁的代码,但仍然会出现与上面相同的错误。Rails在调用profile(单数)时不会给出错误undefined method profiles(复数)。请看一下我上面的代码,我有一个小错误。现在应该可以正常工作了。你用的正是我上面写的吗?我认为您可能在
User
模型上调用了方法create\u profile
,而不是在实例User
上调用。(区分大小写)你考虑过用它来注册吗?不,我不会。我将此作为一种学习体验。如果我想把事情做好,我会付钱给别人买elance之类的东西。
User.all.each do |user|
user.create_profile(:city => "bla", ...)
end