私は非常に簡単なアプリケーションを持っています。このアプリケーションが必要とするのは、ユーザー名が存在するかどうかを確認することだけです。もしそうなら、ユーザーにリダイレクトしてください。存在しない場合は、入力したユーザー名に応じて新しいユーザーを作成し、新しいユーザーにリダイレクトします。新しいユーザは何らかの理由で作成されることはありませんが、find_or_create行はrails consoleで動作します。ここでは、コードは次のようになります。find_or_createがRailsで動作しない
user_controller.rb
def new
@user = User.new
end
def create
@u = User.find_or_create_by_name(params[:name])
redirect_to @u
end
new.html.erb
<% form_for(@user) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :Username %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
任意の助けをいただければ幸いです。
は、あなたのアプリケーション内のすべてのエラーを取得していますか?ユーザーを作成していない場合は、そのリダイレクトでエラーが発生するはずです。そうであれば、データベースへの保存に失敗したときにエラーが発生するはずです。また、アプリケーションがこのコードを実行して実行されていることを確認してください。再起動すると疑問が解消されます。 – coreyward
名前はすべてユーザーが作成する必要がありますか?その他のバリデーションはありませんか? – tokland